解决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

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

0 0 投票数
打分
订阅评论
提醒
guest
1 评论
内联反馈
查看所有评论
Mooction
游客
9 年 前

看到Cannot find就习惯性觉得是路径打错了的童鞋举手