GOOGLE ADS

четверг, 5 мая 2022 г.

Привет, мир машинописный код получает синтаксическую ошибку: неожиданный токен ':' при отладке

Я создал минимальный машинописный проект, содержащий очень простой код.

Структура проекта:

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:


  1. Установите его черезnpm install --save-dev ts-node


  2. В .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.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...