刚刚我把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
本站文章未经文下加注授权不得拷贝发布。
看到Cannot find就习惯性觉得是路径打错了的童鞋举手