私は node.js を使用して Web アプリケーションを作成しています。アプリケーションを実行すると (ブラウザーで index.html を開くか、ターミナルでコマンド「npm start」を使用するかのいずれか)、次の 2 つのエラーが発生します。
キャッチされない参照エラー: プロセスが定義されていません
キャッチされない参照エラー: require が定義されていません
「requireが定義されていません」というエラーを解決するために、index.htmlのheadタグに次のリンクを明示的に含めました。これスクリプトでは、require 関数が定義されています。ただし、process 関数については同様のものが見つかりません。
私の質問は2つあります:
なぜ組み込みの node.js モジュールを再定義する必要があるのでしょうか? なぜそれらは「組み込みモジュール」として認識されないのでしょうか? 「組み込みモジュール」という用語は、モジュールを外部/間接的に再定義する必要がないことを意味しているのではないですか?
この問題を解決する方法はありますか? 私のスクリプトは非常にシンプルで、node.js の基本的な機能を使用しようとしているだけなので、どのようなエラーが発生したのかわかりません。
この問題に遭遇し、回避策やこの問題が発生する原因を見つけた方がいらっしゃいましたら、大変助かります。
ベストアンサー1
Webpack は、環境変数を「クライアント側」の .js コードに挿入できます (SPA/PWA の場合に非常に便利です)。webpack.config.js でプラグインとして定義する必要があります。
webpack.config.js
module.exports = {
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
'process.env.MY_ENV': JSON.stringify(process.env.MY_ENV),
... and so on ...
})
],
}
これでクライアント側からアクセスできるようになります:
app.js
// Something like that
if(process.env.NODE_ENV === 'debug'){
setDebugLevel(1)
}