yarn start
でSSRを実行しようとしたらエラーが発生して原因解決に数時間かかったので備忘録を残しておきます。
Nuxt3でfalse.accept is not a functionのビルド後の実行時エラー
2022-05-02 (Mon)
エラー
error: Uncaught TypeError: false.accept is not a function at entry-{数字}.mjs:1
原因
結論ですが、.env
にNODE_ENV = 'development'
を記載しているのがだめだったようです。
こちらを削除したら正常に実行できるようになりました。
これはNODE_ENV = 'staging'
などのようにdevelopment以外でもだめなようです。
とにかく.env
でNODE_ENV
を記載すると死ぬ。
確認
nuxt dev
ではNODE_ENV指定なくてもdevelopment
node .output/server/index.mjs
ビルドが必要なものはビルド時のNODE_ENVの値が使用される。
ただしyarn preview
だけはビルド時のNODE_ENVの値ではなく常にproduction
で機能します。
なので環境毎にNODE_ENVの値を変えたい場合はcross-env
を使用して下記のようにしたらよさそうです。(これはnuxt2のときも同様に設定することができる)
ビルドコマンド | NODE_ENVに設定される値 |
---|---|
nuxt build |
development |
cross-env NODE_ENV=\"staging\" nuxt build |
staging |
cross-env NODE_ENV=\"production\" nuxt build |
production |
PM2使用時
pm2で実行管理している場合ecosystem.config.js
で環境設定を設定していると思いますが、ここでNODE_ENVを指定しても意味はないようです
module.exports = {
apps: [
{
script: '.output/server/index.mjs',
args: 'start',
env: {
NODE_ENV: 'development', // 機能せずビルド時に指定された値が使用される
},
env_production: {
NODE_ENV: 'production', // 機能せずビルド時に指定された値が使用される
},
},
],
};
コメント