Description
现在 NPM 可谓是 node 的最佳包管理平台,很自然的 FIS 也放在上面。但是大家对 NPM 不甚了解,碰到一些稀奇古怪的安装问题觉着很摸不着头脑,然后把怒气直指 FIS。为了大家不动肝火,以及方便大家查阅,打算对常 NPM 常见问题在此汇总一下。
如何查看所有 NPM 的设置
npm config ls -l
全局安装了无法找到命令
大家都知道,FIS 是要求全局安装的,是因为避免由于 FIS 多版本不同项目目录下而导致编译时有差异,而导致不必要的麻烦。
有些同学可能遇到了
npm install -g fis
命令行执行 fis
说找不到这个命令。这时候一般都开始抓瞎了。
解决办法:
- 执行
npm prefix -g
会输出全局安装路径 - Windows 用户把输出的路径添加到环境变量
%PATH%
里面,环境变量的设置请参考 百度 - 类 Unix 用户把
$(npm prefix -g)/bin
目录设置到PATH
中。- 用 bash
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
- 用 zsh
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.zshrc && source ~/.zshrc
- 用 bash
全局安装了无法 require
这个包
解决办法:
设置环境变量
-
Windows
NODE_PATH=<prefix>/node_modules
<prefix>
执行npm prefix -g
获得
-
类 Unix
export NODE_PATH=$(npm prefix -g)/lib/node_modules
安装过程中报错,checksum 失败
出现类似这样的错误
gyp ERR! stack Error: node-v0.12.7.tar.gz local checksum
a797be06553ea8e13a6ec9c3cdd8ed1b065dd1d05d2a3a0378296e70cf16d5ab not match remote
b23d64df051c9c969b0c583f802d5d71de342e53067127a5061415be7e12f39d
解决办法
清除缓存再进行安装
npm cache clean
安装过程中说没权限,sudo 也不行
一般发生在_类Unix_系统中
-
获取缓存目录
npm config get cache
(~/.npm
) -
删除缓存目录
sudo rm -rf ~/.npm
-
再次安装坚决不要用
sudo
,如果还是出现权限问题请修改安装路径权限
安装长时间不成功
NPM 平台无奈被祖国电子长城防火墙阻隔了,时不时抽风。如果遇到这种情况只有三种解决办法;
-
一次次重试
-
换个国内的源
npm install -g fis --disturl=http://registry.npm.taobao.org/mirrors/node --registry=http://registry.npm.taobao.org
-
添加代理
npm config set proxy <http proxy> npm config set https-proxy <https proxy>
<http proxy>
换成你自己的 http 代理地址<https proxy>
换成你自己的 https 代理地址
注意: 如果换代理了,请更改配置,不然你又会怀疑上帝
安装报 gyp*
编译不成功
得详细说一下为啥有这种错误,其实 node 里面不是跑得是 V8 么,那么其第三方扩展机制也全盘拿了过来。这块说的第三方扩展是指 addon
插件,也就是所谓的 native
插件。请不要被这个词语吓着了,说白了就是写一个二进制插件,用 c++
写的。
所以这类插件需要编译器(gcc,clang,vs)编译,安装这类插件的时候如果你系统没有装 VS 或者是 gcc 什么的编译器就会报错。
而且这类插件在各个版本的 node 下兼容性不好,所以报编译语法错误也是很正常的。遇到此类错误只有两种解决办法;
- 自己搞懂机制自己编译插件
- 到作者 GitHub 上求助
想本地安装而非全局安装,运行 FIS 怎么搞
由于种种维护上的原因,FIS 必须要全局安装包括其插件,有些人就受不了这个,觉着是反模式,咋眼一看确实是,但长远来看安装全局同一版本才是王道,有过 node 工程实践的同学对此估计深有体会。
但不巧,上线编译的时候用的编译机不是自己的机器,而无法部署 FIS 编译环境啊。这时候怎么办呢?
首先,我们得了解一下 NPM 安装的时候的一些处理。不才,直接贴 NPM 的文档。
DIRECTORIES
See npm help 5 npm-folders to learn about where npm puts stuff.
In particular, npm has two modes of operation:
- global mode:
npm installs packages into the install prefix at prefix/lib/node_modules and bins are installed in prefix/bin.
- local mode:
npm installs packages into the current project directory, which defaults to the current working directory. Packages are
installed to ./node_modules, and bins are installed to ./node_modules/.bin.
Local mode is the default. Use --global or -g on any command to operate in global mode instead.
看到 local mode
的解释了吧。当 local mode
安装的时候,会把 bin
链接到 ./node_modules/.bin
目录下。
那么当本地安装 FIS
npm install fis
执行
./node_modules/.bin/fis -v
来调用 FIS 进行操作。
假设你想进行更方便的操作,设置两个环境变量即可。
PATH
执行命令靠它NODE_PATH
noderequire
靠它
然后就没有然后了,你可以肆意蹂躏了。
Activity
[-]NPM 使用注意事项[/-][+]NPM 使用问题汇总[/+]boboxiao commentedon Aug 4, 2015
始终还是安装不成功!
boboxiao commentedon Aug 4, 2015
报错:
npm ERR! Error: shasum check failed for /tmp/npm-32475-sRV7oL_x/registry.npmjs.org/node-pngcrush/-/node-pngcrush-0.2.0.tgz
npm ERR! Expected: bd87b2ad24938604ae888add94ae58fa111354c8
npm ERR! Actual: 8d663ed6b7329fbd55ac60dd1b8beae4d5d1dffd
npm ERR! From: https://registry.npmjs.org/node-pngcrush/-/node-pngcrush-0.2.0.tgz
npm ERR! at /usr/local/lib/node_modules/npm/node_modules/sha/index.js:38:8
npm ERR! at ReadStream. (/usr/local/lib/node_modules/npm/node_modules/sha/index.js:85:7)
npm ERR! at ReadStream.emit (events.js:117:20)
npm ERR! at _stream_readable.js:938:16
npm ERR! at process._tickCallback (node.js:419:13)
npm ERR! If you need help, you may report this entire log,
npm ERR! including the npm and node versions, at:
npm ERR! http://github.com/npm/npm/issues
npm ERR! System Darwin 14.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "fis3"
npm ERR! cwd /Users/bobo
npm ERR! node -v v0.10.30
npm ERR! npm -v 1.4.21
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/bobo/npm-debug.log
npm ERR! not ok code 0
lengziyu commentedon Aug 7, 2015
我和楼上一样,安装不成功!
oxUnd commentedon Aug 7, 2015
后重试
lengziyu commentedon Aug 7, 2015
还是报错- -
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "F:\node\node.exe" "F:\node\node_modules\npm\bin\npm-cli.
js" "install" "-g" "fis3"
npm ERR! node v0.12.4
npm ERR! npm v2.10.1
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settin
gs.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\Administrator\npm-debug.log
oxUnd commentedon Aug 7, 2015
@lengziyu 你网络不通?为什么连 npm 都访问不了?
lengziyu commentedon Aug 7, 2015
@xiangshouding 额,可能是我网络问题,最近总是断线。我回家试试看,谢谢~
lengziyu commentedon Aug 7, 2015
@xiangshouding 网络恢复了,安装成功了,再次感谢~慢慢开始撸FIS了
AkkaXdXd commentedon Aug 7, 2015
fis-command-server@0.7.6 这个依赖找不到啊 什么情况啊
AkkaXdXd commentedon Aug 7, 2015
npm WARN install Couldn't install optional dependency: No compatible version fou
nd: fis-command-server@0.7.6
npm WARN install Valid install targets:
npm WARN install ["0.7.5","0.7.4","0.7.3","0.7.2","0.7.1","0.7.0","0.7.0-beta6",
"0.7.0-beta5","0.7.0-beta4","0.7.0-beta3","0.7.0-beta2","0.7.0-beta","0.6.12","0
.6.11","0.6.10","0.6.9","0.6.8","0.6.7","0.6.6","0.6.5","0.6.4","0.6.3","0.6.2",
"0.6.1","0.6.0","0.5.9","0.5.8","0.5.7","0.5.6","0.5.5","0.5.4","0.5.3","0.5.2",
"0.5.1","0.5.0","0.4.9","0.4.8","0.4.7","0.4.6","0.4.5","0.4.4","0.4.3","0.4.2",
"0.4.1","0.4.0","0.3.4","0.3.3","0.3.2","0.3.1","0.3.0","0.2.8","0.2.7","0.2.6",
"0.2.5","0.2.4","0.2.3","0.2.2","0.2.1","0.2.0","0.1.9","0.1.8","0.1.7","0.1.6",
"0.1.5","0.1.3","0.1.2","0.1.1","0.1.0","0.0.8","0.0.7","0.0.6","0.0.4","0.0.3",
"0.0.2","0.0.1"]
zhangtao07 commentedon Aug 7, 2015
0.7.6 今天几小时前刚发布,可能是你的npm源还没更新,请稍后重试或者使用官方源试试
119 remaining items