問題タブ [node-windows]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Windows サービスとして実行されている node.js アプリで max-old-space-size を増やす
私は node.js に比較的慣れていませんが、node.js やその依存関係をインストールする必要なく、スタンドアロン アプリケーションとしてデプロイされるように設計されたアプリを構築しました。
特定の、簡単に再現できないインスタンスで、アプリがクラッシュし、「Javascript ヒープがメモリ不足です」というエラーが発生するという問題が発生しています。
根本原因をデバッグしている間、ヒープ サイズを増やそうとしています。node-windows を使用してアプリケーションをサービスとして実行し、nexe をビルドしています。他のフォーラムの回答で見つけた、次のような多くのことを試しました。
- Python 2x & 3x のさまざまなバージョン
- ビルド スクリプトで "build": "nexe --enableNodeCli --build" を実行し、ショートカット ターゲットに --max-old-space-size=4096 を追加します。
- Node.js のアップグレード (および最終的にはロールバック)
- --max-old-space-size=4096 を Windows 環境変数の NODE_OPTIONS に追加
..とりわけ。これらは、提案されている最も一般的なソリューションのようです。
これらのソリューションの一部では、ビルドを実行できませんでした。その他は動作しますが、メモリは約 1.5 GB のままです。
誰かがこの問題に遭遇し、アプリのヒープメモリを増やす解決策を見つけました:
- ノードのない環境で実行
- Windows サービスとして実行
……
- OS: Windows10
- ノード: 10.22.1 (12.19.0 も試しました)
- Nexe: 3.3.7
- Python: 2.7.17 (2.7.16、2.7.14、3.7、3.8 & 3.9 も試しました)
……
編集: nodeOptions: ['--max-old-space-size=4096'] をサービス オプションに追加しようとしましたが、v8.getHeapStatistics からサイズが約 1.42 GB であるというフィードバックが得られます。これまでは index.js 内でサービスを作成し、それを実行可能ファイルにビルドしてきましたが (node.js をインストールする必要がないようにするため)、それを独自のスクリプトに分離し、コンソールで実行しました - 同じ結果です。
コードは次のとおりです。
postgresql - Wiki.js が実行されていません。データベース接続エラー
Windows Enterprise 2016 LTSB バージョン 1607。PostgreSQL と共に Wiki.js をインストール。Node.js が以前にインストールされている (v12.16.2)。
Powershellを使用した wiki.js インストール プロセスのステップ 8に進みます。
次のエラーが表示されます。
PostgreSQL を作成するのを忘れていたことに気付いたので、pgAdmin4.28 を使用して「wiki」データベースを作成しました。エラーは次のように変更されました:
助けを送ってください!すべてのコメントに感謝します。ありがとう!
node.js - node-windows で作成された Windows サービスを介して dotenv 構成パスを渡す方法
Windows Server 2008 R2 エンタープライズ
ノード バージョン 12.13.1
node-windows バージョン 1.0.0-beta.5
コードで require('dotenv') を使用して環境変数を (デフォルトの .env ファイルなどから) ロードする代わりに、ノード アプリケーションを呼び出すときに、特定の環境ファイルへのパスを渡す必要があります。この環境ファイルは、アプリケーションが開始される顧客によって異なります (たとえば、異なるデータベース、パス、顧客コードなど)。
cli では、次の方法で正常に実行できます。
ご覧のとおり、env ファイルの場所に絶対パスを使用していますが、相対パスでも機能します。ノードウィンドウでこれを機能させることができない理由として、これを排除しようとしています。
node-windows を使用して、ノード アプリケーションを呼び出し、上記のコードのように特定の env ファイルをロードする Windows サービス ラッパーを作成しようとしています。Windowsサービスを作成した後、しばらくすると終了します。これは、機能するために必要な環境変数が不足していることを示しています。つまり、環境ファイルを読み込めません。
node-windows を使用して Windows サービスを作成するスクリプトは次のとおりです。
さまざまな構成で「scriptOptions」アプローチと「env」アプローチの両方を試しましたが、何も機能しません。
誰かが以前にこのようなものを作ることができたなら、どうやってそれをやったのか知りたい.