Я создал минимальный машинописный проект, содержащий очень простой код.
Структура проекта:
my-ts/
- hello.ts
- tsconfig.json
привет.тс
let message: string = "Hello world";
console.log(message);
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"outDir": "out"
}
}
В VS Code IDE, когда я нажимаю F5, который запускает код с отладчиком, консоль отладчика показывает ошибку:
Uncaught SyntaxError /Users/john/Projects/my-ts/hello.ts:1
let message: string = "Hello world";
^
SyntaxError: Unexpected token ':'
at compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Module._load (node:internal/modules/cjs/loader:822:12)
at executeUserEntryPoint (node:internal/modules/run_main:81:12)
at <anonymous> (node:internal/main/run_main_module:17:47)
Почему эта ошибка? Может ли кто-нибудь объяснить основную причину?
Решение проблемы
Node.js не может изначально запускать TypeScript, но вы передаете ему код TypeScript.
Вам понадобится какой -то этап сборки, на котором TypeScript (или аналогичный) компилирует TypeScript в JavaScript, а затем вы запускаете этот JavaScript в Node.js. Один из популярных способов сделать это ts-node
:
Установите его через
npm install --save-dev ts-node
В
.vscode/launch.json
добавьте это вconfigurations
массив:{
"type": "node",
"request": "launch",
"name": "Launch Program",
"runtimeArgs": [
"-r",
"ts-node/register"
],
"args": [
"${workspaceFolder}/hello.ts"
]
}
Теперь нажатие F5 в .ts
файле скажет ts-node
скомпилировать код в JavaScript и запустить результат.
В качестве альтернативы вы можете использовать Deno (от создателей Node.js), который изначально запускает TypeScript.
Комментариев нет:
Отправить комментарий