2012-03-14 134 views
12
 
[[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) 
> 

回答

14

您是否已使用-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

54

您所安裝的模塊全球轉到您的應用程序,並嘗試這個全球鏈接到您的應用程序文件夾

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

相關問題