Khi tôi chạy dự án ion 3 bằng lệnh "ionic serve" gặp lỗi này:
Câu trả lời:
Để có câu trả lời tổng quát không góc cạnh cho những ai đặt câu hỏi này từ Google:
Mỗi khi bạn gặp phải lỗi này có thể là do bộ nhớ bị rò rỉ hoặc do sự khác biệt giữa cách Node <= 10 và Node> 10 quản lý bộ nhớ. Thông thường, chỉ cần tăng bộ nhớ được cấp phát cho Node sẽ cho phép chương trình của bạn chạy nhưng có thể không thực sự giải quyết được vấn đề thực sự và bộ nhớ được sử dụng bởi tiến trình nút vẫn có thể vượt quá bộ nhớ mới mà bạn cấp phát. Tôi khuyên bạn nên lập hồ sơ sử dụng bộ nhớ trong quy trình nút của bạn khi nó bắt đầu chạy hoặc cập nhật lên nút> 10.
Tôi đã bị rò rỉ bộ nhớ. Đây là một bài viết tuyệt vời về cách gỡ lỗi rò rỉ bộ nhớ trong nút.
Điều đó nói rằng, để tăng bộ nhớ, trong thiết bị đầu cuối nơi bạn chạy quy trình Node của mình:
export NODE_OPTIONS="--max-old-space-size=8192"
trong đó giá trị của max-old-space-size
có thể là: [2048, 4096, 8192, 16384]
vv
[UPDATE] Các ví dụ khác để rõ hơn:
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
tôi, ứng dụng của chúng tôi đã bắt đầu bị lỗi với tính năng làm mới nhanh.
Trong trường hợp của tôi, hãy khắc phục sự cố này khi cài đặt NodeJs, phiên bản 12.10.0
vấn đề tương tự trên máy chủ centos 7, nhưng điều này đã giải quyết được vấn đề của tôi:
node --max-old-space-size=X node_modules/@angular/cli/bin/ng build --prod
Ở đâu X = (2048 or 4096 or 8192 o..)
là giá trị của bộ nhớ
ng serve
và một tệp .js lớn được tham chiếu trong scripts
phần của tệp angular.json
đó cần được tải vào bộ nhớ.
Hãy thử giải pháp này đã được chỉ ra trong một thông báo cũ trên diễn đàn: https://forum.ionicframework.com/t/3-7-0-ios-build-with-prod-not-working/107061/24
Mở node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js
Thay đổi dòng đầu tiên từ:
#!/usr/bin/env node
đến
#!/usr/bin/env node --max-old-space-size=4096
Hãy thử các giá trị 1024 và 2048, nhưng đối với một ứng dụng tương đối lớn, bạn có thể cần 4096.
Tôi gặp lỗi tương tự khi thực hiện ng build
lệnh trong mã Visual Studio. Nhưng tôi có thể xây dựng thành công khi thực hiện cùng một điều trong dòng lệnh Windows theo trình tự sau.
Bước 1.
set NODE_OPTIONS=--max_old_space_size=4096
Bước 2.
ng build
Tôi nhận được thông báo lỗi tương tự khi thực thi các câu lệnh sau trong mã Visual Studio. Nhưng tôi có thể xây dựng thành công khi thực thi điều tương tự trong dòng lệnh 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
Vì một số lý do mà tất cả câu trả lời ở trên không thực sự phù hợp với tôi, tôi đã làm như sau để khắc phục sự cố của mình:
node_modules
thư mụcnpm install
node --max_old_space_size = 4096 ./node_modules/@angular/cli/bin/ng build --prod --build-Optimizer
thêm thông số đã --build-optimizer
giải quyết vấn đề trong trường hợp của tôi.
Cập nhật:
Tôi không chắc tại sao chỉ thêm --build-Optimizer mới giải quyết được vấn đề nhưng theo tài liệu góc, nó nên được sử dụng với aot được bật, vì vậy lệnh cập nhật sẽ giống như bên dưới
--build-optimizer=true --aot=true
Chạy lệnh này trong thư mục dự án của bạn. Sử dụng giao bóng thay vì xây dựng
node --max_old_space_size=8000 node_modules/@angular/cli/bin/ng serve --prod --port=4202
Thay thế dòng
"start": "ng serve -o --port 4300 --configuration=en"
với
"start": "node --max_old_space_size=5096 node_modules/@angular/cli/bin/ng serve -o --port 4300 --configuration=en"
GHI CHÚ:
cổng - 4300 không phải là hằng số phụ thuộc vào cổng bạn chọn.
--max_old_space_size = 5096 quá không phải là hằng số; bất kỳ giá trị nào 1024,2048,4096, v.v.
Trong trường hợp của tôi, đó là một phép đệ quy gây ra phản ứng sử dụng hết bộ nhớ.
Điều này xảy ra khi tôi đang cấu trúc lại mã của mình và không nhận thấy điều này.
const SumComponent = () => {
return (
<>
<SumComponent />
</>
)
}
Trong các ứng dụng nút khác, điều này có thể giống như sau:
const someFunction = () => {
...
someFunction();
...
}
SumComponent
có chứa a SumComponent
(trong SumComponent
đó có chứa a SumComponent
...)
Đối với tôi, đó là một vấn đề với gói firebase.
Chỉ thêm "@ firebase / database": "0.2.1", cho package.json của bạn, cài đặt lại node_modules và hoạt động.
Tôi đã xóa mô-đun nút hiện có và chạy các lệnh bên dưới để khắc phục sự cố của mình
npm install -all
npm audit fix
Một câu trả lời không góc cạnh khác (tôi cũng gặp phải vấn đề tương tự khi xây dựng ứng dụng phản ứng trên AWS Amplify).
Như đã đề cập bởi Emmanuel, có vẻ như nó đến từ sự khác biệt trong cách bộ nhớ được xử lý bởi nút v10 so với nút v12.
Tôi đã cố gắng tăng trí nhớ mà không có kết quả. Nhưng sử dụng nút v12 đã làm được điều đó.
Kiểm tra cách bạn có thể thêm nvm use $VERSION_NODE_12
vào cài đặt bản dựng của mình như được giải thích bởi @atlesp tại đây https://github.com/aws-amplify/amplify-console/issues/440#issuecomment-602626451
Đối với tôi, vấn đề là có một node_modules
thư mục bổ sung mà tôi đã đổi tên thành node_modules_old
và chạy một thư mục npm install
để tạo mới node_modules
. Bằng cách nào đó, bản dựng vẫn đang chọn node_modules_old
thư mục, vì vậy tôi đã di chuyển node_modules_old
ra khỏi thư mục để khắc phục sự cố.
Vui lòng kiểm tra phiên bản nút của bạn:
$ node -v
Nếu 10.1.1 của nó là gì đó, thì bạn cần cập nhật phiên bản nút cấp gốc của mình thông qua các lệnh bên dưới
$ 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
Sau khi hoàn tất, vui lòng khởi động lại thiết bị đầu cuối hoặc studio trực quan của bạn.
Nó làm việc 100 đô la
Đối với người dùng ion, vui lòng thêm mã bên dưới vào package.json của bạn
"ionic:build": "node --max-old-space-size=16384 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build",
app-scripts
, nhưng nếu bạn xây dựng android hoặc script như ionic cordova build android
thế nào?
Kiểm tra tên thư mục của bạn. Nếu tên thư mục của bạn có khoảng trắng, những loại vấn đề này sẽ phát sinh. Đổi tên không có khoảng trắng. hy vọng nó sẽ hoạt động.
Nếu điều này xảy ra khi chạy ứng dụng React trên VSCode, vui lòng kiểm tra propTypes của bạn, Proptypes không xác định dẫn đến cùng một vấn đề.
Nút #! / usr / bin / env --max-old-space-size = 4096 trong ionic-app-scripts.js không hoạt động
Sửa đổi
node_modules / .bin / ionic-app-scripts.cmd
Bằng cách thêm:
@IF TỒN TẠI "% ~ 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"% *)
Đã làm việc đầu tiên
Đôi khi sự đơn giản là chìa khóa thành công. Tìm kiếm while (i <= 10000) {}
mà không tăng i
mã của bạn;)
Vấn đề này đã không còn nữa, sau khi tôi đã cập nhật tất cả các thư viện như nodejs, stylescript, fiber, npm, v.v. cho dự án của mình.
Cập nhật từ Node 12 lên Node 14 đã giải quyết được vấn đề cho tôi