Skip to content

NPM 使用问题汇总 #565

Open
Open
@oxUnd

Description

@oxUnd
Contributor

现在 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

全局安装了无法 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 node require 靠它

然后就没有然后了,你可以肆意蹂躏了。

Activity

changed the title [-]NPM 使用注意事项[/-] [+]NPM 使用问题汇总[/+] on Jun 25, 2015
boboxiao

boboxiao commented on Aug 4, 2015

@boboxiao

始终还是安装不成功!

boboxiao

boboxiao commented on Aug 4, 2015

@boboxiao

报错:
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

lengziyu commented on Aug 7, 2015

@lengziyu

我和楼上一样,安装不成功!

oxUnd

oxUnd commented on Aug 7, 2015

@oxUnd
ContributorAuthor
npm cache clean

后重试

lengziyu

lengziyu commented on Aug 7, 2015

@lengziyu

还是报错- -
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

oxUnd commented on Aug 7, 2015

@oxUnd
ContributorAuthor

@lengziyu 你网络不通?为什么连 npm 都访问不了?

lengziyu

lengziyu commented on Aug 7, 2015

@lengziyu

@xiangshouding 额,可能是我网络问题,最近总是断线。我回家试试看,谢谢~

lengziyu

lengziyu commented on Aug 7, 2015

@lengziyu

@xiangshouding 网络恢复了,安装成功了,再次感谢~慢慢开始撸FIS了

AkkaXdXd

AkkaXdXd commented on Aug 7, 2015

@AkkaXdXd

fis-command-server@0.7.6 这个依赖找不到啊 什么情况啊

AkkaXdXd

AkkaXdXd commented on Aug 7, 2015

@AkkaXdXd

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

zhangtao07 commented on Aug 7, 2015

@zhangtao07
Member

0.7.6 今天几小时前刚发布,可能是你的npm源还没更新,请稍后重试或者使用官方源试试

119 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @wonderbeyond@oxUnd@light-1986@github-zhang@liupeng110112

        Issue actions

          NPM 使用问题汇总 · Issue #565 · fex-team/fis