2013-11-26 38 views
2

我試圖讓推送通知與Android一起工作。我遵循教程here。它需要安裝node.js的node-gcm模塊。我用下面的命令安裝了這個:找不到模塊'node-gcm'

sudo npm install -g node-gcm 

我有一個名爲notify.js的文件。我運行這個具有:

node notify.js 

但我總是得到錯誤:

module.js:333 
throw err; 
    ^
Error: Cannot find module 'node-gcm' 
at Function.Module._resolveFilename (module.js:331:15) 
at Function.Module._load (module.js:273:25) 
at Module.require (module.js:357:17) 
at require (module.js:373:17) 
at Object.<anonymous> (/var/www/PushPlay/notify.js:1:73) 
at Module._compile (module.js:449:26) 
at Object.Module._extensions..js (module.js:467:10) 
at Module.load (module.js:349:32) 
at Function.Module._load (module.js:305:12) 
at Function.Module.runMain (module.js:490:10) 

任何想法?

回答

8

如果你已經完成了模塊的全局安裝,有時你需要創建一個符號鏈接到全局模塊。試試npm link node-gcm

也嘗試安裝沒有全局開關(npm install node-gcm)的node-gcm,如果它在本地工作,則會發現這是全局安裝的問題。

+1

+1。全局安裝適用於** CLI **,並且實際上僅使全局可用的程序包CLI(通過symlinking連接到類Unix系統上的/ usr/local/bin) - 使用全局程序包**以編程方式**(通常不推薦)總是需要用'npm link '將它們鏈接到本地​​項目(作爲僞本地包)。相反,在類Unix系統上,如果你想運行一個* local包的CLI,使用'$(npm bin)/ ' – mklement0

+0

如果你正在創建一個嚴肅的項目,你應該確保你的依賴關係在你的包中以.json。您可以通過使用'npm install node-gcm --save'進行安裝來實現此目的。 –