我正在尝试使用“ node main.js”运行我的程序,但是,它不断出现错误“ SyntaxError:Unexpected token {”
D:\Visual Studio Code Projects\ts-hello>node main.js
D:\Visual Studio Code Projects\ts-hello\main.js:1
import { LikeComponent } from './like.component';
^
SyntaxError: Unexpected token {
at Module._compile (internal/modules/cjs/loader.js:721:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
我尝试将tsconfig.json文件更改为“ module”:“ commonjs”,但是,此操作无效。我什至卸载并重新安装了节点并从头开始。
import{LikeComponent} from './like.component';
let component = new LikeComponent(10, true);
component.onClick();
console.log(`likesCount: ${component.likesCount}, isSelected: ${component.isSelected}`);
应将程序正确输出到命令提示符。
答案 0 :(得分:2)
请注意,您正在运行node main.js
。
您的main.js
当前具有esm
语法(也称为ES6模块语法)。
假设它是从main.ts
编译的,则您的`tsconfig.json中必须有module: commonjs
// tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
... // other configurations
}
}
这样,当您运行tsc
编译代码时,它将使用commonjs模块语法创建main.js
。
答案 1 :(得分:1)
如果您正在尝试调试 vscode 项目并且您已经拥有 "module": "commonjs",
,那么请检查您的“launch.json”outFiles
以确保它与您的输出文件的实际位置一致(通常通过outDir
):
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/src/index.ts",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": ["${workspaceFolder}/build/**/*.js"], //make sure this matches!
"sourceMaps": true
}
]
}
似乎如果 vscode 没有找到匹配的文件,它只是尝试通过节点运行 ts 文件(这解释了错误)。
我只是在这个问题上挣扎了一段时间,所以希望这能让其他人免于头疼。