📌

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

2022/04/29に公開

問題点

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

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

https://www.mk-engineer.com/posts/nextjs-before-build
https://stackoverflow.com/questions/62096269/cant-run-my-node-js-typescript-project-typeerror-err-unknown-file-extension
https://qiita.com/wakki_haya/items/ae6918fc73757c91c8dc
https://www.npmjs.com/package/ts-node

Discussion