「ionicserve」コマンドを使用してionic3プロジェクトを実行すると、次のエラーが発生します。
回答:
グーグルからこの質問にたどり着く人々のための非角度の一般的な答えのために:
このエラーに直面するたびに、おそらくメモリリーク、またはノード<= 10とノード> 10のメモリ管理方法の違いが原因です。通常、ノードに割り当てられたメモリを増やすだけでプログラムを実行できますが、実際には実際の問題を解決できない場合があり、ノードプロセスで使用されるメモリが割り当てた新しいメモリを超える可能性があります。ノードプロセスが実行を開始するとき、またはノード> 10に更新するときに、ノードプロセスのメモリ使用量をプロファイリングすることをお勧めします。
メモリリークが発生しました。これは、ノードのメモリリークのデバッグに関する優れた記事です。
そうは言っても、メモリを増やすには、ノードプロセスを実行するターミナルで次のようにします。
export NODE_OPTIONS="--max-old-space-size=8192"
値はどこmax-old-space-size
になります[2048, 4096, 8192, 16384]
など
[更新]さらに明確にするためのその他の例:
export NODE_OPTIONS="--max-old-space-size=5120" #increase to 5gb
export NODE_OPTIONS="--max-old-space-size=6144" #increase to 6gb
export NODE_OPTIONS="--max-old-space-size=7168" #increase to 7gb
export NODE_OPTIONS="--max-old-space-size=8192" #increase to 8gb
# and so on...
# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" #increase to Xgb
# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes(MB) you have available.
next.js
、高速更新機能でアプリをクラッシュさせ始めました。
私の場合、NodeJsバージョン12.10.0をインストールしてこの問題を修正します
CentOSサーバー7でも同じ問題が発生しましたが、これで問題は解決しました。
node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
X = (2048 or 4096 or 8192 o..)
メモリの価値はどこにありますか
ng serve
いる巨大な.jsファイルをメモリにロードする必要scripts
がangular.json
あるときだけでした。
フォーラムの古いメッセージで指摘されたこのソリューションを試してください:https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-working/107061/24
開いた node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js
最初の行を次のように変更します。
#!/usr/bin/env node
に
#!/usr/bin/env node --max-old-space-size=4096
値1024と2048を試してください。ただし、比較的大きなアプリの場合は4096が必要になる場合があります。
ng build
Visual Studioコードでコマンドを実行すると、同じエラーが発生しました。しかし、次の順序でWindowsコマンドラインで同じことを実行すると、正常にビルドできます。
ステップ1。
set NODE_OPTIONS=--max_old_space_size=4096
ステップ2。
ng build
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
私の場合、reactがすべてのメモリを使い果たす原因となったのは再帰でした。
これは、コードをリファクタリングしていて、これに気づかなかったときに発生しました。
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
他のノードアプリでは、これは次のようになります。
const someFunction = () => {
...
someFunction();
...
}
SumComponent
、SumComponent
(...SumComponent
を含むを含むSumComponent
)を含むものです
node --max_old_space_size = 4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer
--build-optimizer
私の場合、パラメータを追加することで問題が解決しました。
更新:
--build-optimizerのみを追加することで問題が解決する理由はわかりませんが、Angularドキュメントに従って、aotを有効にして使用する必要があるため、更新されたコマンドは次のようになります
--build-optimizer=true --aot=true
プロジェクトフォルダでこのコマンドを実行します。ビルドの代わりにサーブを使用する
node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve --prod --port=4202
既存のノードモジュールを削除し、以下のコマンドを実行して問題を修正しました
npm install -all
npm audit fix
plsはあなたのノードバージョンをチェックします:
$ node -v
その10.1.1が何かの場合は、以下のコマンドを使用してルートレベルノードのバージョンを更新する必要があります
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
$ source ~/.nvm/nvm.sh
$ nvm ls
$ nvm install 12.18.1
完了したら、plsはターミナルまたはビジュアルスタジオを再起動します。
それは100ドルの仕事です
イオンユーザーplsの場合、package.jsonに以下のコードを追加します
"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
app-scripts
構築する場合に機能しますが、Androidまたはスクリプトをionic cordova build android
どのように構築する場合はどうでしょうか。
別の非角度の答え(AWS Amplifyでreactアプリを構築するときに同じ問題に直面していました)。
エマニュエルが述べたように、それはノードv10とノードv12によるメモリの処理方法の違いに起因しているようです。
私は無駄にメモリを増やそうとしました。しかし、ノードv12を使用することでそれが実現しました。
nvm use $VERSION_NODE_12
ここで@atlespによって説明されているように、ビルド設定に追加する方法を確認してくださいhttps://github.com/aws-amplify/amplify-console/issues/440#issuecomment-602626451
私の場合、構文エラー(表示されませんでした)があり、このエラーが発生しました。
#!/ usr / bin / env node --max-old-space-size = 4096 in ionic-app-scripts.js dint work
変更
node_modules / .bin / ionic-app-scripts.cmd
追加することにより:
@IF EXIST "%〜dp0 \ node.exe"( "%〜dp0 \ node.exe" "%〜dp0 .. @ ionic \ app-scripts \ bin \ ionic-app-scripts.js"%*)ELSE( @SETLOCAL @SET PATHEXT =%PATHEXT:;。JS; =;%node --max_old_space_size = 4096 "%〜dp0 .. @ ionic \ app-scripts \ bin \ ionic-app-scripts.js"%*)
fianlly働いた
プロジェクトのnodejs、typescript、yarn、npmなどのすべてのライブラリを更新した後、この問題は解消されました。