Node.jsを使用してWebアプリケーションを作成しています。アプリケーションを実行すると(ブラウザーでindex.htmlを開くか、ターミナルで "npm start"コマンドを使用して)、次の2つのエラーが発生します。
Uncaught ReferenceError:プロセスが定義されていません
キャッチされていないReferenceError:requireが定義されていません
「require is not defined」エラーを、index.htmlヘッドタグに、require関数が定義されている this スクリプトへのリンクを具体的に含めることで解決しました。しかし、私はプロセス関数について同様のものを見つけることができません。
私の質問は二重です:
組み込みのnode.jsモジュールを再定義する必要があるのはなぜですか?なぜ、それらが「組み込みモジュール」であるので、それらが認識されないのですか? 「組み込みモジュール」という用語は、モジュールを外部から、または直接に再定義する必要がないことを意味していませんか?
この問題を解決する方法はありますか?私のスクリプトは非常にシンプルです。node.jsの基本機能を使用しようとしているだけなので、どのようなエラーが発生したのかわかりません。
誰かがこの問題について来て、それを回避する方法またはこれが起こる理由を見つけた場合、あなたは大きな助けになるでしょう。
Node.jsコードは、ブラウザではなくノードプロセスで実行する必要があります(コードはサーバーで実行する必要があります)。
コードを実行するには、次のコマンドを実行する必要があります。
node server.js
次に、たとえば「 http:// localhost:808 」と入力して、ブラウザからサーバーにアクセスできます。必要なサーバーコードを含むファイルserver.js(またはその他)が必要です(この場合は、ポート8080でWebサーバーを作成します)。
次の簡単な例に従って、express as httpサーバーモジュールを使用できます。 http://expressjs.com/starter/hello-world.html
このノードjsアプリを実行しようとしたときに同じ問題が発生しました: https://www.youtube.com/watch?v=mr9Mtm_TRpw
HTMLのrequireが<script>から到達し、未定義でした。
<script> require('./renderer.js');</script>
私はそれを次のように変更しました:
<script src="./renderer.js"></script>
HTMLスクリプトのプロセスも未定義でした。 jsファイルにwebPreferences:nodeIntegrationを含めました。
win = new BrowserWindow({
width: 800,
height:600,
icon: __dirname+'/img/sysinfo.png',
webPreferences: {
nodeIntegration: true
}
});
お役に立てば幸いです。
同じ問題が.eslintrc.jsファイルに移動してグローバル変数を構成し、グローバル変数にrequireとprocessを追加して、対応する値を「書き込み可能」に設定することで解決しました。それがあなたのために働くことを願っています。
このリンクは本当に役に立ちました https://eslint.org/docs/user-guide/configuring#specifying-globals