javascript - node.js: Oväsentlig token {
Så jag har ett enhetstest skrivet för Mocha med TypeScript. Jag försöker köra det med Gulp (som egentligen inte spelar någon roll här). Jag får följande undantag:
(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)
Kan någon berätta för mig vilken inställning jag behöver i min tsconfig.json för att fixa problem som dessa?
node -v
v10.6.0
tsc -v
Version 2.9.2
och här är min 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"
}
}
Svar #1
Node stöder inte fullt ut import än eller åtminstone inte som standard, så fel kommer att uppstå när man importerar på det sättet.
När du använder TypeScript bör du använda "module": "commonjs" i dina compilerOptions, eftersom det är vad node.js använder. När det kompileras kommer TypeScript att konvertera alla imports till node-stödda require's.