Kiedy uruchamiam projekt ionic 3 przy użyciu polecenia „ionic serv” niż otrzymuję ten błąd:
Odpowiedzi:
Aby uzyskać ogólną odpowiedź nie-kątową dla tych, którzy trafiają na to pytanie od Google:
Za każdym razem, gdy napotykasz ten błąd, prawdopodobnie jest to spowodowane wyciekiem pamięci lub różnicą między sposobem zarządzania pamięcią przez Node <= 10 i Node> 10. Zwykle samo zwiększenie pamięci przydzielonej do Node pozwoli na uruchomienie programu, ale może nie rozwiązać rzeczywistego problemu, a pamięć używana przez proces węzła może nadal przekraczać nową przydzieloną pamięć. Radziłbym profilować użycie pamięci w procesie węzła, gdy zaczyna działać lub aktualizować do węzła> 10.
Miałem wyciek pamięci. Oto świetny artykuł na temat debugowania wycieków pamięci w węźle.
To powiedziawszy, aby zwiększyć pamięć, w terminalu, w którym uruchamiasz proces Node:
export NODE_OPTIONS="--max-old-space-size=8192"
gdzie wartości max-old-space-size
mogą być: [2048, 4096, 8192, 16384]
itp
[AKTUALIZACJA] Więcej przykładów dla większej przejrzystości:
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
zaczął upaść naszą aplikację z funkcją szybkiego odświeżania.
W moim przypadku napraw ten problem, instalując NodeJs w wersji 12.10.0
ten sam problem na serwerze centos 7, ale to rozwiązało mój problem:
node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
Gdzie X = (2048 or 4096 or 8192 o..)
jest wartość pamięci
ng serve
i a masywne js pliku określonego w scripts
części angular.json
, która musiała zostać załadowane do pamięci.
Wypróbuj to rozwiązanie, które wskazywało w starej wiadomości na forum: https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-working/107061/24
otwarty node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js
Zmień pierwszą linię z:
#!/usr/bin/env node
do
#!/usr/bin/env node --max-old-space-size=4096
Wypróbuj wartości 1024 i 2048, ale w przypadku stosunkowo dużej aplikacji możesz potrzebować 4096.
Wystąpił ten sam błąd, gdy wykonuję ng build
polecenie w kodzie programu Visual Studio. Ale mogę pomyślnie budować, gdy wykonuję to samo w wierszu poleceń systemu Windows w następującej kolejności.
Krok 1.
set NODE_OPTIONS=--max_old_space_size=4096
Krok 2.
ng build
Otrzymałem ten sam komunikat o błędzie, gdy wykonuję następujące instrukcje w kodzie programu Visual Studio. Ale mogę pomyślnie budować, gdy wykonuję to samo w wierszu poleceń systemu Windows.
npm install -g increase-memory-limit
increase-memory-limit
set NODE_OPTIONS=--max_old_space_size=4096
ng build -c deploy --build-optimizer --aot --prod --sourceMap
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --baseHref=/baseUrl/ --prod=true
Z pewnych powodów wszystkie powyższe odpowiedzi tak naprawdę nie działały dla mnie, wykonałem następujące czynności, aby rozwiązać problem:
node_modules
foldernpm install
Wymień linię
"start": "ng serve -o --port 4300 --configuration=en"
z
"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"
UWAGA:
port - 4300 nie jest stałą, zależy od wybranego portu.
--max_old_space_size = 5096 zbyt niestała; dowolna wartość 1024,2048,4096 itd
W moim przypadku była to rekurencja która powodowała, że reakcja zużywała całą pamięć.
Stało się to podczas refaktoryzacji kodu i tego nie zauważyłem.
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
W innych aplikacjach węzłów może to wyglądać tak:
const someFunction = () => {
...
someFunction();
...
}
SumComponent
zawiera SumComponent
(który zawiera a, SumComponent
który zawiera SumComponent
...)
node --max_old_space_size = 4096 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer
dodanie parametru --build-optimizer
rozwiązało problem w moim przypadku.
Aktualizacja:
Nie jestem pewien, dlaczego dodanie tylko --build-optimizer rozwiązuje problem, ale zgodnie z dokumentami kątowymi powinno być używane z włączonym aot, więc zaktualizowane polecenie powinno wyglądać jak poniżej
--build-optimizer=true --aot=true
Uruchom to polecenie w folderze projektu. Użyj służyć zamiast budowania
node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve --prod --port=4202
Dla mnie był to problem z pakietem firebase.
Dodaj tylko "@ firebase / database": "0.2.1", dla twojego package.json, zainstaluj ponownie node_modules i działa.
Usunąłem istniejący moduł węzła i uruchomiłem poniższe polecenia, aby naprawić mój problem
npm install -all
npm audit fix
Pls sprawdź wersję swojego węzła:
$ node -v
Jeśli jest to coś 10.1.1, musisz zaktualizować wersję węzła poziomu głównego za pomocą poniższych poleceń
$ 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
Po zakończeniu uruchom ponownie terminal lub studio wizualne.
To praca 100 $
Dla użytkowników jonowych proszę dodać poniższy kod do pliku package.json
"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
app-scripts
, jeśli budujesz sieć internetową , ale jeśli budujesz Androida lub skrypt, jak w ionic cordova build android
jaki sposób?
Aktualizacja z Węzła 12 do Węzła 14 rozwiązała problem za mnie
Kolejna nie-kątowa odpowiedź (miałem ten sam problem podczas budowania aplikacji reagującej na AWS Amplify).
Jak wspomniał Emmanuel, wydaje się, że wynika to z różnicy w sposobie obsługi pamięci przez węzeł v10 i węzeł v12.
Bezskutecznie próbowałem zwiększyć pamięć. Ale użycie węzła v12 zrobiło to.
Sprawdź, jak możesz dodać nvm use $VERSION_NODE_12
do swoich ustawień kompilacji, jak wyjaśnił Richard
frontend:
phases:
preBuild:
commands:
- nvm use $VERSION_NODE_12
- npm ci
build:
commands:
- nvm use $VERSION_NODE_12
- node -v
- npm run-script build
U mnie problem polegał na tym, node_modules
że miałem dodatkowy folder, na który zmieniłem nazwę, node_modules_old
i uruchomiłem, npm install
aby wygenerować nowy plik node_modules
. W jakiś sposób kompilacja musiała nadal pobierać node_modules_old
folder, więc wyprowadziłem node_modules_old
się z katalogu, aby naprawić problem.
U mnie wystąpił błąd składni (który się nie pojawił) i spowodowałem ten błąd.
Sprawdź nazwę swojego folderu. Jeśli nazwa folderu zawiera spacje, wygenerują się tego rodzaju problemy. Zmień nazwę bez spacji. mam nadzieję, że to zadziała.
Jeśli dzieje się tak podczas uruchamiania aplikacji React na VSCode, sprawdź swoje właściwości propTypes, niezdefiniowane Proptypes prowadzą do tego samego problemu.
#! / usr / bin / env node --max-old-space-size = 4096 w pracy ionic-app-scripts.js dint
Modyfikowanie
node_modules / .bin / ionic-app-scripts.cmd
Poprzez dodanie:
@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"% *)
Pracował fianlly
Czasami prostota jest kluczem do sukcesu. Szukaj while (i <= 10000) {}
bez zwiększania i
kodu;)
Ten problem zniknął po zaktualizowaniu wszystkich moich bibliotek, takich jak nodejs, maszynopis, przędza, npm itp. Dla mojego projektu.