Spe*_*ill 3 windows node.js npm
我试图npm install
在Windows 8.1的Git Bash客户端中执行,但收到以下错误:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@1.2.0 (node_modules/fsevents/node_modules/rc/node_modules/minimist):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, open '/home/vagrant/code/proadco.test/node_modules/fsevents/node_modules/rc/node_modules/minimist/package.json.737544774'
npm ERR! path ../@babel/parser/bin/babel-parser.js
npm ERR! code EPROTO
npm ERR! errno -71
npm ERR! syscall symlink
npm ERR! EPROTO: protocol error, symlink '../@babel/parser/bin/babel-parser.js' -> '/home/vagrant/code/mysite.test/node_modules/.bin/parser'
npm ERR! A complete log of this run can be found in:
npm ERR! /home/vagrant/.npm/_logs/2019-06-24T02_39_32_641Z-debug.log
Run Code Online (Sandbox Code Playgroud)
运行npm install --no-bin-links
允许它成功运行。但是我不完全了解此操作的后果。我相信这是在说:“不要创建符号链接。这只是一个hack,而不是解决问题的根源。但是我读过Windows不支持符号链接,因此无法解决。
有人可以解释这里的后果吗?也许如何克服符号链接的根本问题?
如果您希望 npm 停止为您创建符号链接,您可以通过以下方式避免这种情况
npm install --no-bin-links
Run Code Online (Sandbox Code Playgroud)
有关 npm 文档的更多信息https://docs.npmjs.com/cli/install.html
注意:这可能会产生一些未知的副作用,这种方法适用于我正在处理的应用程序以及当我遇到此问题时。副作用可能与 npm 试图创建的符号链接有关,并且在开发的后期阶段它发现符号链接不可用。
小智 5
什么工作对我来说是启动Windows命令提示符作为管理员,并vagrant up
从那里。
问题是,作为主机的Windows需要管理员权限才能创建symlinks
。
为了摆脱以前的不成功安装,我运行npm clean-install
npm run dev仍然会出现一些错误,但是ui:auth
可以正常工作。
这个简单的解决方案可以排除node_modules
文件夹与 vagrant 默认同步提供程序(不是 rsync 也不是 nfs)同步。
只需vagrant ssh
进入您的 gest 机器并执行以下命令:
$ mkdir ~/project_node_modules
$ sudo mount --bind ~/project_node_modules /home/vagrant/code/project/node_modules
Run Code Online (Sandbox Code Playgroud)
警告!您需要rsync
在主机和来宾机器上!
我发现可以排除node_modules
文件夹与 Windows 文件系统同步,以避免符号链接问题。
在 Homestead 中,Vagrantfile
此行将激活对您选择的文件夹的 Rsync 支持,但不包括右侧的node_modules
文件夹:
config.vm.synced_folder "C:\\path\\to\\project", "/home/vagrant/path/to/project", type: "rsync", :mount_options => ["dmode=777", "fmode=666"], rsync__exclude: ['node_modules/']
Run Code Online (Sandbox Code Playgroud)
如果听起来很困难,您可以按照配置共享文件夹中的 Homestead 文档将其放入您的Homestead.yaml
文件中:
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
Run Code Online (Sandbox Code Playgroud)
现在,运行命令npm install
将能够安装所有项目依赖项,并且命令npm run dev
将能够正确生成混合清单。