web-dev-qa-db-fra.com

WebStorm, une fonction ou méthode asynchrone dans ES5/ES3 nécessite le constructeur "Promise"

J'essaie d'écrire des tests dans TypeScript (ES6) à l'aide de WebStorm IDE. Par exemple.: 

// Imports...

describe('Message', () => {
    const server = express();
    server.use(bodyParser.json());

    const messageService = { findAll: () => ['test'] };

    beforeAll(async () => {
        const module = await Test.createTestingModule({
            modules: [MessageModule],
        })...
    });

    // Tests...
});

Cependant WebStorm IDE affiche l'erreur suivante à async () => 

TS2705: Une fonction ou méthode asynchrone dans ES5/ES3 nécessite la promesse constructeur. Assurez-vous d'avoir une déclaration pour la promesse constructeur ou incluez ES2015 dans votre option --lib.

Mon tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "allowJs": true,
    "outDir": "./dist"
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}

Je lis ts Une fonction ou méthode asynchrone dans ES5/ES3 nécessite le constructeur "Promise"

"lib": [ "es2015" ]

cependant, cela n'a aucun effet. Des idées ce qui ne va pas?

6
Artjom Zabelin

Ajouter

"lib": [ "es2015" ]

to tsconfig.json devrait corriger le problème . Cependant, il semble que vos fichiers de spécifications ne soient pas inclus dans votre tsconfig.json (vérifiez les valeurs "include":[] et "exclude":[]). Donc, le service TypeScript doit utiliser un tsconfig.json différent pour vos fichiers (peut être un par défaut, si aucun fichier tsconfig.json contenant vos spécifications ne peut être trouvé) problème, assurez-vous de spécifier la propriété lib dans config utilisée pour le traitement de vos fichiers de spécifications

11
lena

Solution sans éditer les sources du projet

J'ai eu ce problème avec IntelliJ et résolu en modifiant mes paramètres IDE:

Paramètres -> Langage et cadres -> TypeScript

puis dans le champ "Options", ajoutez:

--lib es2015

 enter image description here

3
Francesco Borzi
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "lib": ["es2015"]
  },
  "include": [
    "src/**/*",
    "**/*.spec.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

l'ajout de "lib":["es2015"] à "compilerOptions" conformément à la réponse de @ lena et la suppression de **/*.spec.ts de "exclude":[] et l'ajout à "include":[] l'ont résolu pour moi.

0
Manu Nair