Nextjsでseeder用のtsファイルを実行したい

3871 ワード

問題点

prismaを使って開発をしている時にSeeder用のtsファイルを実行したかったのですが、
以下のようなerror達が発生してしまいtsファイルの実行ができなかった

SyntaxError: Cannot use import statement outside a module
Can't run my Node.js Typescript project TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /app/src/App.ts
SyntaxError: Cannot use import statement outside a module

解決方法

結論

nextjsのtsconfig.jsonとは別に、commonjs用のtsconfig.jsonを作成する

実際にやった解決方法

  1. tsconfig.local.jsonを作成
  2. tsconfig.local.jsoncompilerOptionsを設定
tsconfig.local.json
{
  "compilerOptions": {
    "module": "CommonJS"
  }
}
  1. package.jsonにseeder用のnpm scriptを追加
package.json
"scripts": {
  ...
  "seed": "ts-node --project tsconfig.local.json ./src/db/seed.ts"
}
  1. npm scriptを実行
npm run seed

補足

tsファイルをcommandで実行するためts-nodeのinstallが必要

npm i ts-node

解決のため参考にしたサイト