节点错误找不到已安装的模块

节点错误找不到已安装的模块

问题描述:

 
[[email protected] websocket_start]# npm ls -g installed 
npm WARN ls doesn't take positional args. Try the 'search' command 
npm WARN [email protected] package.json: bugs['web'] should probably be bugs['url'] 
/usr/lib 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
└── [email protected] 
[[email protected] websocket_start]# npm ls installed 
npm WARN ls doesn't take positional args. Try the 'search' command 
/home/qonco/workspace/JS/websocket_start 
(empty) 
[[email protected] websocket_start]# node 
> require("websocket-server"); 
Error: Cannot find module 'websocket-server' 
    at Function._resolveFilename (module.js:332:11) 
    at Function._load (module.js:279:25) 
    at Module.require (module.js:354:17) 
    at require (module.js:370:17) 
    at repl:1:1 
    at REPLServer.eval (repl.js:80:21) 
    at repl.js:190:20 
    at REPLServer.eval (repl.js:87:5) 
    at Interface. (repl.js:182:12) 
    at Interface.emit (events.js:67:17) 
> 

您是否已使用-g选项安装模块? 我认为并非每个模块都是全局安装的,而是尝试在本地为您正在创建的项目(npm install)安装它,然后检查错误是否仍然存在。

+0

谢谢!我在本地安装,它的工作原理。为什么地方和全球有所不同?该节点是不是会在全局和本地中找到模块? – Thetsu 2012-03-14 15:38:01

+7

如果你只想要('东西');最好是在本地安装,否则,你必须要求('{PREFIX}'),其中prefix是全局安装路径。 看看这个[博客文章](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/),正如它所说的,一般来说经验法则是如果要在应用程序中使用它们,则在本地安装;如果要在命令行中使用它们,则在全局范围内使用。 – Javo 2012-03-14 21:16:01

+0

如果正在运行Node.js脚本,例如'〜/ bin/my-awesome-script.js',Node.js将在该脚本的文件夹中查找模块,而不是运行脚本的当前文件夹。所以在这种情况下,确保从'〜/ bin'运行'npm install ...'。 – avernet 2013-02-27 23:21:13

您所安装的模块全球转到您的应用程序,并尝试这个全球链接到您的应用程序文件夹

sudo npm link <MODULeNAME> 
+3

这应该是最好的答案,它是一种更简洁/简单的本地安装方式,并允许您在全局范围内安装该模块。 – Bloodyaugust 2012-11-16 23:03:42

+1

我只在做'sudo npm link',即使在'package.json'文件中正确声明,也找不到模块。添加''的参数解决了它。 – 2013-11-14 07:13:31

+2

+1。这对我有用,确实是一个更干净的解决方案。 – asiby 2014-01-11 17:19:39