【问题标题】:typescript tsc Unexpected token { on importtypescript tsc Unexpected token { 导入时
【发布时间】:2019-05-07 00:38:39
【问题描述】:

我知道这是一个常见问题,似乎 ts 配置中的 "module": "commonjs" 必须有帮助,但它没有。

节点v11.4.0, tsc3.4.3

tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "es2017",
         "dom"
      ],
      "target": "es6",
      "module": "commonjs",
      "moduleResolution": "node",
      "outDir": "./build",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": false,
      "rootDir": "src"
   },
   "exclude": [
      "node_modules",
      "**/*.spec.ts",
      "**/*.test.ts"]
}

导入.ts 文件:

import {Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn} from "typeorm";

构建并运行:

  1. tsc
  2. node build/server.js

错误

(function (exports, require, module, __filename, __dirname) { import {Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn} from "typeorm";
                                                                     ^

SyntaxError: Unexpected token {
    at new Script (vm.js:83:7)
    at createScript (vm.js:267:10)
    at Object.runInThisContext (vm.js:319:10)
    at Module._compile (internal/modules/cjs/loader.js:686:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:734:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Module.require (internal/modules/cjs/loader.js:659:17)
    at require (internal/modules/cjs/helpers.js:22:18)

请帮忙:)

更新: 它仅出现在单个 .ts 文件中。其他文件中的导入工作正常。同时它是唯一使用来自typeorm 模块的导入的文件。

【问题讨论】:

  • 您可以尝试将目标从es6 更改为es2015es2015 很适合我。
  • 是的,我确实试过了。这是一个非常奇怪的问题,只出现在一个文件中(其他文件中有多个导入效果很好)
  • 我找到了这个错误的解决方案in this answer

标签: node.js typescript ecmascript-6


【解决方案1】:

似乎 ts 配置中的 "module": "commonjs" 必须有帮助,但它没有。

应该的。它不工作,因为 tsconfig 没有被使用。您应该运行 tsc 并提供项目文件:

tsc -p .

【讨论】:

  • 试过了,没用。为什么你认为它没有被使用?例如,如果我设置baseUrl,它肯定有效。
  • @user 的输出显然不是 CommonJS。 OTOH,为什么不用node --experimental-modules 运行它?
【解决方案2】:

首先检查tsconfig,一定是这些配置:

"target": "es6",
"module": "commonjs",
"moduleResolution": "node",

之后,检查您是否正在启动 JAVASCRIPT 文件而不是 TYPESCRIPT 文件

//Wrong:
node ....../file.ts

//Correct:
node ....../file.js

【讨论】:

    【解决方案3】:

    这是一个路径问题。 cd dir build, node server.js

    【讨论】:

    • 谢谢,这对我有用,遇到了 TypeORM 库的这个问题,这解决了我得到的输出构建的运行时错误。
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    相关资源
    最近更新 更多