在接手一個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 falsell and la commands: ls --long
最后才想到,可能是內存不夠了。由于是以vagrant啟動的一臺Ubuntu14.04的虛擬機,默認只有500M的內存。而且該項目會用到一些底層的npm包,會編譯一些代碼。這就導致了內存不夠用??梢圆橐幌孪鄳南到ylog,在路徑 /var/log
之下,確認自己的問題。如/var/log/syslog
和 /var/log/messages
等。
由于我是虛擬機,所有增大內存相對簡單。在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 -sFilename 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
的時候,便解決了所有的問題了。
新聞熱點
疑難解答