解决node无法调用全局模块的问题

刚刚我把SPDY装到全局,npm -g install spdy ,

spdy@2.0.4 /usr/local/lib/node_modules/spdy
├── http-deceiver@1.2.4
├── handle-thing@1.2.4
├── select-hose@2.0.0
├── debug@2.2.0 (ms@0.7.1)
└── spdy-transport@1.1.8 (obuf@1.1.1, wbuf@1.7.0, hpack.js@2.1.4, readable-stream@2.0.2)

可以看到这个模块被装到/usr/local/lib/node_modules里了

 

 

 

然后开个环境测试一下,结果

> require('spdy')
Error: Cannot find module 'spdy'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at repl:1:1
    at REPLServer.defaultEval (repl.js:154:27)
    at bound (domain.js:254:14)
    at REPLServer.runBound [as eval] (domain.js:267:12)
    at REPLServer.<anonymous> (repl.js:308:12)
    at emitOne (events.js:77:13)

吓得我满脑子都是doge!!!这是为什么?

 

百度无果,谷歌找到一个windows下的类似问题的解决办法。简单地说就是node找模块用的NODE_PATH环境变量里没有指向/usr/local/lib/node_modules的项,所以把这个路径加进NODE_PATH里就行了。

进入su模式,或者sudo命令 vi /etc/bashrc,在底下加一行

export NODE_PATH="/usr/local/lib/node_modules:$NODE_PATH"

接着:wq! 保存。

然后source /etc/bashrc  。(如果你并没有在执行node的TTY窗口执行以上动作,那你需要把这个命令在那个窗口也输入一遍,或者把它关了重开)

 

现在再reuqire全局模块就不会报错了。



本文发布于 https://luojia.me

本站文章未经文下加注授权不得拷贝发布。

本博客使用Disqus评论系统,如果看不到评论框,请尝试爬墙。