最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - node.js: Unexpected token { - Stack Overflow

programmeradmin3浏览0评论

So I have a unit test written for mocha using TypeScript. I am trying to run it using gulp (which doesn't really play a part here). I get the following exception:

(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._pile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

Could someone tell me what setting in need in my tsconfig.json to fix problems like these?

node -v 
v10.6.0
tsc -v
Version 2.9.2

and here's my tsconfig.json:

{
    "include" : [
        "src",
        "test",
        "unittest"
    ],
    "pileOnSave": true,
    "pilerOptions": {
        "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"
    }
}

So I have a unit test written for mocha using TypeScript. I am trying to run it using gulp (which doesn't really play a part here). I get the following exception:

(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._pile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)

Could someone tell me what setting in need in my tsconfig.json to fix problems like these?

node -v 
v10.6.0
tsc -v
Version 2.9.2

and here's my tsconfig.json:

{
    "include" : [
        "src",
        "test",
        "unittest"
    ],
    "pileOnSave": true,
    "pilerOptions": {
        "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"
    }
}
Share Improve this question asked Jul 27, 2018 at 19:02 Jeff SaremiJeff Saremi 3,0246 gold badges41 silver badges63 bronze badges 5
  • 1 have you tried "module": "monjs"? That is what node uses... – Get Off My Lawn Commented Jul 27, 2018 at 19:04
  • 1 Try using var assert = require("chai"); – Sookie Singh Commented Jul 27, 2018 at 19:10
  • I guess this is not an error in tsconfig.json but some other file which you are including. – Sookie Singh Commented Jul 27, 2018 at 19:12
  • Have you tried removing inside spaces between curly braces?. Once it was my problem for hours. I.e. import {assert) from Instead of import { assert } from – AtarC5 Commented Jul 27, 2018 at 19:23
  • @GetOffMyLawn That solved my problem! thank you so much – Jeff Saremi Commented Jul 27, 2018 at 19:25
Add a ment  | 

1 Answer 1

Reset to default 9

Node doesn't fully support import yet or at least not by default, so errors will happen when importing using the import in that way.

When using TypeScript you should use "module": "monjs" in your pilerOptions, because that is what node.js uses. When piled, TypeScript will convert all the imports to node supported require's.

发布评论

评论列表(0)

  1. 暂无评论