在接手一個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包,會編譯一些代碼。這就導致了內存不夠用。可以查一下相應的系統log,在路徑 /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 的時候,便解決了所有的問題了。
新聞熱點
疑難解答