#javascript #typescript #webstorm #solidity
Вопрос:
`"C:Program Filesnodejsnode.exe" C:UsersKeithWebstormProjectsflashbotsrcindex.ts
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for C:UsersKeithWebstormProjectsflashbotsrcin
dex.ts
←[90m at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:71:15)←[39m
←[90m at Loader.getFormat (internal/modules/esm/loader.js:105:42)←[39m
←[90m at Loader.getModuleJob (internal/modules/esm/loader.js:243:31)←[39m
←[90m at async Loader.import (internal/modules/esm/loader.js:177:17)←[39m
←[90m at async Object.loadESM (internal/process/esm_loader.js:68:5)←[39m {
code: ←[32m'ERR_UNKNOWN_FILE_EXTENSION'←[39m
}
Process finished with exit code 1`
Для этого проекта есть много кода и файлов, поэтому я не уверен, что нужно настроить. Однако он существует на github — https://github.com/flashbots/searcher-minter если вы думаете, что знаете решение.
Комментарии:
1. узел не знает, как запустить typescript
2.
.ts
расширения предназначены для файлов машинописного текста. Я думаю, вам, возможно, потребуется повторно проверить, включен ли в этом проекте typescript. Или если вы уже запустилиyarn install
илиnpm install
до запуска проекта.
Ответ №1:
Вы не можете запустить код машинописи, передав его в Node.js напрямую, Node.js не обеспечивает встроенную поддержку для выполнения машинописного текста. Код должен быть либо скомпилирован на лету, либо предварительно скомпилирован. вот несколько рецептов:
- Для запуска выбранного файла машинописи с помощью
ts-node
:- Установите ts-узел с помощью
npm i ts-node
. - Создайте новый Node.js запустите/отладьте конфигурацию.
- Добавьте
--require ts-node/register
в поле Параметры узла. - В поле файл JavaScript добавить
$FilePathRelativeToProjectRoot$
. - Сохраните конфигурацию.
- Используйте его для запуска (или отладки) файла, который в данный момент открыт в редакторе или выбран в представлении проекта. Вы можете сделать это с помощью значков на панели навигации или Выполнить…Экшен.
- Установите ts-узел с помощью
Если вам нужно передать какие-либо дополнительные параметры ts-node
(например --project tsconfig.json
), вы можете добавить их в поле параметров приложения в конфигурации запуска/отладки.
- Чтобы скомпилировать приложение с помощью TypeScript и запустить выбранный файл TypeScript
- Создайте Node.js запустите/отладьте конфигурацию.
- В разделе «Перед запуском» нажмите «Добавить» и выберите «Скомпилировать машинописный текст».
- Выбирать
tsconfig.json
. - В поле Файл JavaScript вам нужно выбрать путь к скомпилированному
.js
файлу. - Если скомпилированный JavaScript находится рядом с его источником, добавьте
$FileRelativeDir$/$FileNameWithoutExtension$.js
- Если файлы сохранены в выходной папке (с сохранением структуры папок), добавьте имя папки перед шаблоном, например
build/$FileRelativeDir$/$FileNameWithoutExtension$.js
- Сохраните конфигурацию.
- Используйте его для запуска (или отладки) файла, который в данный момент открыт в редакторе или выбран в представлении проекта.
- Выбирать
Ответ №2:
Я думаю, вам следует настроить файл tsconfig.json и добавить новый start
скрипт, я думаю, что, возможно, глобальный скрипт, который вы пытаетесь запустить, не может найти ts-node
модуль
{
"compilerOptions": {
"target": "ES2018",
"module": "commonjs",
"lib": [
"es2018"
],
"declaration": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": false,
"inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true,
"strictPropertyInitialization": false,
"typeRoots": [
"./node_modules/@types"
]
},
"exclude": [
"node_modules",
]
}
###Добавьте новый старт в свой пакет.json
"scripts": {
"start": "npx ts-node src/index.ts"
},