環境說明
ganiks@ganiks-ubuntu-trusty-64:/ganiks/parse-server$ npm -v 6.5.0 ganiks@ganiks-ubuntu-trusty-64:/ganiks/parse-server$ node -v v10.15.0
問題描述
安裝部署 ParseServer服務
ganiks@ganiks-ubuntu-trusty-64:/ganiks/parse-server$ npm install -g mongodb-runner parse-server
[..................] / rollbackFailedOptional: verb npm-session d714a710a2e0bbbc
[..................] / rollbackFailedOptional: verb npm-session d714a710a2e0bbbc
[..................] \ rollbackFailedOptional: verb npm-session d714a710a2e0bbbc
[..................] \ rollbackFailedOptional: verb npm-session d714a710a2e0bbbc
[..................] \ rollbackFailedOptional: verb npm-session d714a710a2e0bbbc
npm WARN deprecated uws@10.148.1: stop using this version
npm ERR! path ../lib/node_modules/mongodb-runner/bin/mongodb-runner.js
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules/mongodb-runner/bin/mongodb-runner.js' -> '/usr/local/bin/mongodb-runner'
npm ERR! { [Error: EACCES: permission denied, symlink '../lib/node_modules/mongodb-runner/bin/mongodb-runner.js' -> '/usr/local/bin/mongodb-runner']
這個錯誤以前遇到過,關鍵詞 symlink permission,意思是沒有創建超鏈接的權限;
我今天這種環境經常遇到這種問題(Windows宿主機器+Vagrant Ubuntu Host機器)
解決方案
給 npm install 添加參數 --no-bin-links
ganiks@ganiks-ubuntu-trusty-64:/ganiks/parse-server$ npm install -g mongodb-runner parse-server --no-bin-links + mongodb-runner@4.7.1 + parse-server@3.1.3 added 563 packages from 403 contributors in 28.79s ganiks@ganiks-ubuntu-trusty-64:/ganiks/parse-server$ ls /usr/local/lib/node_modules/ -l total 12 drwxrwxr-x 6 ganiks ganiks 4096 Jan 17 10:23 mongodb-runner drwxr-xr-x 10 root root 4096 Jan 17 08:51 npm drwxrwxr-x 7 ganiks ganiks 4096 Jan 17 10:23 parse-server
參考資料
https://stackoverflow.com/questions/39098812/npm-install-when-to-use-no-bin-links
One scenario that I can think of is working with a virtual machine (i.e. vagrant w/ virtual box or VMware) on windows host.
You can't translate symlinks to a synchronized folder on Windows share, so you will need this option to go around it.Use it for any filesystem that doesn’t support symbolic links.
簡言之,所有不支持軟鏈接的磁盤系統都需要用到這個 --no-bin-links
