6
votes

Moka d'importation de jeton inattendu

Je ne peux pas utiliser les importations car j'ai toujours cette erreur:

 {
  "compilerOptions": {
    "target": "es2017",
    "module": "commonjs",
    "lib": [
      "dom",
      "es2015"
    ],
    "outDir": "dist",

    "strict": false
  }
}

Dans mon fichier index.test.ts j'ai ceci:

"scripts": {
"test": "mocha --reporter spec --compilers test/**/*.test.js",     

Dans mon package.json j'ai ceci:

import { expect } from 'chai';
describe('Hello function', () => {
    it('should return hello world', () => {
        const result = hello();
        expect(result).to.equal('Hello World!');
    });
});

},

Mon tsconfig.json:

(function (exports, require, module, __filename, __dirname) { import { expect } from 'chai';
SyntaxError: Unexpected token import

Veuillez me dire comment puis-je utiliser les importations?


6 commentaires

Avez-vous un fichier .babelrc ? Si oui, qu'est-ce qu'il a à l'intérieur?


Je n'ai pas ce fichier, je n'utilise pas babel.


quelle version de mocha utilisez-vous?


Mocha 5.2.0, @ types / moka 5.2.5


quelle version de Typescript vous utilisez il y a un problème avec la 2.0.0


Écriture dactylographiée 3.2: 2,


3 Réponses :


2
votes

module moka + dactylographie + es6

  1. tsconfig.json
--require ts-node/register
--require @babel/register
...
  1. mocha.opts
{
  "compilerOptions": {
    ...
    "module": "commonjs"
  }
}


2 commentaires

Veuillez fournir plus qu'un simple code comme réponse. Au lieu de cela, une explication du code et une description des raisons pour lesquelles il répond à la question sont les plus utiles.


Pourquoi tout le monde s'attend à ce que les gens utilisent Babel? J'utilise tsc, ça ne marche pas?



0
votes
// ./dev/ts-node-mocha/register-commonjs.js

require('ts-node').register({
    compilerOptions: {
        "module": "commonjs"
    }
});
npx mocha --require ./dev/ts-node-mocha/register-commonjs --extensions ts  './src/**/*.spec.ts'

0 commentaires

1
votes

Cela fonctionne pour moi.

"devDependencies": {
    "esm": "^3.2.25"
}

Ou dans les scripts package.json (les deux options fonctionnent, choisissez celle que vous préférez):

npm install --save-dev esm

Et n'oubliez pas d'ajouter esm à devDependencies:

"scripts": {
    "test": "mocha -r esm -r ts-node/register src/**/*.spec.ts",
    "test-ts": "ts-mocha -r esm -p tsconfig.json src/**/*.spec.ts"
}

donc dans package.json ça va être

npx mocha --require ts-node/register --require esm src/**/*.spec.ts

PS Merci @ user318830, vous m'avez fait comprendre qu'il était possible de spécifier plusieurs '--require'.


0 commentaires