L'erreur se produit-il avec esModuleInterop: true
. Peut-être VSCode est ignorant votre tsconfig.json
ou d'une autre avec l' esModuleInterop: true
est utilisé.
Pour un correctif définitif définir l'option de compilateur esModuleInterop
de true
et l'utilisation import express
au lieu de import * as express
.
Le problème :
L'ES6 spécification définit la notion d ' "espace de noms de l'objet". Un espace de noms de l'objet est - namespaceObject
dans cette déclaration : import * as namespaceObject from 'a-module'
. L' typeof
cet objet est - object
, vous n'êtes pas censé être capable de l'appeler.
Que vous utilisiez import * as express
jusqu'à présent en raison express
est un CommonJS module, pour Node.js il est exporté à l'aide de module.exports
. Toutefois, il est illégal dans l'ES6 spec, et la Machine maintenant, vous avertit.
La solution :
Paramètre esModuleInterop
true fera Tapuscrit envelopper votre import
des appels pour vérifier si le module est un ES6 module ou un CommonJS. Si c'est un CommonJS module et que vous utilisez import default from 'module'
Tapuscrit de trouver et retourner le bon CommonJS module.
À partir du Tapuscrit note de version :
Remarque: Le nouveau comportement est ajouté sous un drapeau pour éviter injustifiée
les pauses à l'existant, des bases de code. Nous recommandons fortement l'appliquant à la fois à
les projets nouveaux et existants. Pour les projets existants, importations d'espace de noms
(import * que s'exprimer à partir de "l'express"; express();) devront être
converti par défaut à l'importation (import express à partir de "l'express";
express();).