NextJS: Запустите скрипт машинописи на сервере

#typescript #next.js #ts-node

Вопрос:

У меня есть проект NextJS/Typescript, в котором я хочу добавить скрипт CLI, который должен обрабатывать некоторые файлы на сервере.

К сожалению, мне не удается запустить сценарий.

Пример сценария src/cli.ts :

 console.log("Hello world");
// Process files
 

Я попытался запустить сценарий с помощью:

 ts-node src/cli.ts
 

Но я получаю это сообщение об ошибке:

 src/cli.ts:1:1 - error TS1208: 'cli.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module.
 

Когда я добавляю пустой оператор » экспорт {}», я получаю это сообщение об ошибке:

 (node:15923) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
 

Насколько я знаю, сейчас невозможно использовать NextJS с модулями ES.

Есть ли другой способ запустить скрипт в проекте NextJS? Может быть, мне нужно изменить конфигурацию веб-пакета?

Я использую последние версии: Next 11, Typescript 4.3, узел 14.18, ts-узел 10.13 по умолчанию tsconfig.json , package.json .

Ответ №1:

Запустите это вместо этого:

 npx ts-node --skip-project src/cli.ts
 

Ссылка: https://github.com/TypeStrong/ts-node#tsconfig

--skip-project Флаг не будет разрешать/загружать ваши tsconfig.json и, таким образом, игнорировать "isolatedModules": true требуемые Next.js.

Вы также можете создать отдельный tsconfig файл для ts-node --project [path] этой опции и использовать его.

Другой способ-переопределить конфигурацию для ts-node tsconfig.json себя, как это:

 {
  "extends": "ts-node/next/tsconfig.json",

  "ts-node": {
    "compilerOptions": {
      // compilerOptions specified here will override those declared below,
      // but *only* in ts-node.  Useful if you want ts-node and tsc to use
      // different options with a single tsconfig.json.

      "isolatedModules": false
    }
  },

  "compilerOptions": {
    // typescript options here
  }
}
 

Ссылка: https://github.com/TypeStrong/ts-node#via-tsconfigjson-recommended