打字稿意外的令牌导入摩卡

时间:2019-02-07 06:39:06

标签: node.js typescript

我无法使用导入,因为我总是遇到此错误:

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

在我的文件index.test.ts中,我有这个:

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

在我的package.json中,我有这个:

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

},

我的tsconfig.json

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

    "strict": false
  }
}

请告诉我如何使用进口商品?

3 个答案:

答案 0 :(得分:1)

这对我有用。

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

或在package.json脚本中(两个选项均起作用,请选择您喜欢的任何一个):

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

不要忘记将esm添加到devDependencies

npm install --save-dev esm

因此在package.json中它将成为

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

P.S。感谢@ user318830,您使我意识到可以指定多个'--require'。

答案 1 :(得分:0)

mocha +打字稿+ es6模块

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

答案 2 :(得分:0)

test

#pragma GCC push_options #pragma GCC optimize ("O0") void test(int n) { int i; for (i = 0; i < n; i++) { s.code[i] = 1; } } #pragma GCC pop_options