【问题标题】:node.js: Unexpected token {node.js:意外的令牌{
【发布时间】:2018-07-27 19:02:47
【问题描述】:

所以我有一个使用 TypeScript 为 mocha 编写的单元测试。 我正在尝试使用 gulp 运行它(这在这里并没有真正发挥作用)。 我得到以下异常:

(function (exports, require, module, __filename, __dirname) { import { assert } from 'chai';
                                                                     ^

SyntaxError: Unexpected token {
    at new Script (vm.js:74:7)
    at createScript (vm.js:246:10)
    at Object.runInThisContext (vm.js:298:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

有人能告诉我 tsconfig.json 中需要什么设置来解决这些问题吗?

node -v 
v10.6.0
tsc -v
Version 2.9.2

这是我的 tsconfig.json:

{
    "include" : [
        "src",
        "test",
        "unittest"
    ],
    "compileOnSave": true,
    "compilerOptions": {
        "module": "es2015",
        "moduleResolution": "node",
        "esModuleInterop": true,
        "target": "es5",
        "noImplicitAny": true,
        "declaration": true,
        "sourceMap": true,
        "preserveConstEnums": true,
        "lib": [
            "es2015", "dom"
        ],
        "noUnusedLocals": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "alwaysStrict": true,
        "strictNullChecks": false,
        "noUnusedParameters": false,
        "pretty": true,
        "allowUnreachableCode": false,
        "experimentalDecorators": true,
        "suppressImplicitAnyIndexErrors": true,
        "outDir": "./build"
    }
}

【问题讨论】:

  • 你试过"module": "commonjs"吗?这就是节点使用的......
  • 尝试使用var assert = require("chai");
  • 我猜这不是 tsconfig.json 中的错误,而是您包含的其他一些文件。
  • 你试过删除花括号之间的空格吗?一旦这是我几个小时的问题。 IE。 import {assert) from 而不是 import { assert } from
  • @GetOffMyLawn 这解决了我的问题!非常感谢

标签: javascript typescript tsc


【解决方案1】:

Node 尚不完全支持import,或者至少默认不支持,因此以这种方式使用导入时会发生错误。

使用 TypeScript 时,您应该在 compilerOptions 中使用 "module": "commonjs",因为这是 node.js 使用的。编译后,TypeScript 会将所有 imports 转换为节点支持的 require

【讨论】:

  • 节点 12 似乎可以处理 import {foo} from 'bar'
猜你喜欢
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2012-09-21
  • 2019-08-07
  • 2018-11-10
  • 2013-12-24
相关资源
最近更新 更多