С ошибкой, продолжает говорить Неизвестное расширение файла

#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-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"
  },