NPM install - killed error solution


在接手一個Node項目的時候,npm install。卻出現了”killed”的錯誤。以為是Node版本的問題,熟練地切換了0.11與0.10版,同樣無解。
由於新的npm版本吧,npm install的時候已經無法看到常規的log信息了。以npm install -d查看安裝的過程,發現無任何特殊的地方。在一定程度的時候,直接被”killed”。關於npm install -d可以看 npm config

-v: --version
-h, -?, --help, -H: --usage
-s, --silent: --loglevel silent
-q, --quiet: --loglevel warn
-d: --loglevel info
-dd, --verbose: --loglevel verbose
-ddd: --loglevel silly
-g: --global
-C: --prefix
-l: --long
-m: --message
-p, --porcelain: --parseable
-reg: --registry
-f: --force
-desc: --description
-S: --save
-D: --save-dev
-O: --save-optional
-B: --save-bundle
-E: --save-exact
-y: --yes
-n: --yes false
ll and la commands: ls --long

最后才想到,可能是內存不夠了。由於是以vagrant啟動的一台ubuntu14.04的虛擬機,默認只有500M的內存。而且該項目會用到一些底層的npm包,會編譯一些代碼。這就導致了內存不夠用。
可以查一下相應的系統log,在路徑 /var/log之下,確認自己的問題。如/var/log/syslog/var/log/messages等。

Solution

1. 增大內存。

由於我是虛擬機,所有增大內存相對簡單。在vagrantfile里,只需要增加一條:

  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
  end

即可。

2. 利用swap file實現虛擬內存

使用

sudo swapon -s

查看系統是否配置了交換區域。沒有的話, 便直接開始創建swap file。
創建一個1G的文件。

sudo fallocate -l 1G /swapfile

使用

ls -lh /swapfile

確認是否是自己所需要的文件大小。

啟用Swap文件
首先調整文件的權限,若該文件能被其他用戶隨意的讀寫,則會產生很大的安全隱患。

sudo chmod 600 /swapfile

現在安全多了,可以讓系統開始設置交換區域了。

sudo mkswap /swapfile

啟用該文件

sudo swapon /swapfile

現在基本的步驟已經完成了,可以使用最初的命令驗證swap file是否正確使用。

sudo swapon -s

Filename                    Type          Size     Used     Priority
/swapfile                               file          1048572     0     -1

交換分區已經成功設置,系統會在必要的時候使用它。

注意
現在已經啟用了swap文件,但當我們重啟的時候,系統不會自動地啟用該swap文件。可以通過修改fstab文件實現開機使用swap文件。
用root權限編輯

sudo vim /etc/fstab

在文件的最后,需要添加一行告訴操作系統自動使用swap文件。

/swapfile   none    swap    sw    0   0

如此再npm install 的時候,便解決了所有的問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM