2013-05-22 63 views
1

正如我試圖把我的應用程序的NodeJS這是工作的罰款就地就近的Heroku,這裏是我在終點站下車:無法重建的依賴與NPM

[email protected]:~/RubymineProjects/nodejs_consumer$ git push heroku master 
Counting objects: 1417, done. 
Compressing objects: 100% (1195/1195), done. 
Writing objects: 100% (1417/1417), 2.02 MiB | 22 KiB/s, done. 
Total 1417 (delta 247), reused 0 (delta 0) 

-----> Node.js app detected 
-----> Resolving engine versions 
     Using Node.js version: 0.10.6 
     Using npm version: 1.2.21 
-----> Fetching Node.js binaries 
-----> Vendoring node into slug 
-----> Installing dependencies with npm 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No readme data. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] 'repositories' (plural) Not supported. 
     npm WARN package.json Please pick one as the 'repository' field 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No readme data. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] 'repositories' (plural) Not supported. 
     npm WARN package.json Please pick one as the 'repository' field 
     npm WARN package.json [email protected] No repository field. 

     > [email protected] install /tmp/build_f86ikz343m5u/node_modules/dnode/node_modules/weak 
     > node-gyp rebuild 

     gyp http GET http://nodejs.org/dist/v0.10.6/node-v0.10.6.tar.gz 
     gyp http 200 http://nodejs.org/dist/v0.10.6/node-v0.10.6.tar.gz 
     make: Entering directory `/tmp/build_f86ikz343m5u/node_modules/dnode/node_modules/weak/build' 
     CXX(target) Release/obj.target/weakref/src/weakref.o 
     SOLINK_MODULE(target) Release/obj.target/weakref.node 
     SOLINK_MODULE(target) Release/obj.target/weakref.node: Finished 
     COPY Release/weakref.node 
     make: Leaving directory `/tmp/build_f86ikz343m5u/node_modules/dnode/node_modules/weak/build' 

     > [email protected] install /tmp/build_f86ikz343m5u/node_modules/shoe/node_modules/sockjs/node_modules/rbytes 
     > node-waf configure build 

     sh: node-waf: not found 
     npm ERR! weird error 127 
     npm ERR! not ok code 0 
!  Failed to rebuild dependencies with npm 
!  Heroku push rejected, failed to compile Node.js app 

To [email protected]:dcaclab-simulator.git 
! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to '[email protected]:dcaclab-simulator.git' 

這裏是我的package.json文件:

{ 
    "name": "node-example", 
    "version": "0.0.1", 
    "dependencies": { 
    "dnode": "1.0.5", 
    "shoe": "0.0.10" 
    }, 
    "engines": { 
    "node": "0.10.x", 
    "npm": "1.2.x" 
    } 
} 

有什麼想法嗎?

編輯

嘗試使用節點0.8,這裏是我的了:

[email protected]:~/RubymineProjects/nodejs_consumer$ git push heroku master 
Counting objects: 1420, done. 
Compressing objects: 100% (1198/1198), done. 
Writing objects: 100% (1420/1420), 2.02 MiB | 24 KiB/s, done. 
Total 1420 (delta 249), reused 0 (delta 0) 

-----> Node.js app detected 
-----> Resolving engine versions 
     Using Node.js version: 0.8.23 
     Using npm version: 1.2.21 
-----> Fetching Node.js binaries 
-----> Vendoring node into slug 
-----> Installing dependencies with npm 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No readme data. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] 'repositories' (plural) Not supported. 
     npm WARN package.json Please pick one as the 'repository' field 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No readme data. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] No repository field. 
     npm WARN package.json [email protected] 'repositories' (plural) Not supported. 
     npm WARN package.json Please pick one as the 'repository' field 

     > [email protected] install /tmp/build_1uw8vrtz5u7yu/node_modules/dnode/node_modules/weak 
     > node-gyp rebuild 

     gyp http GET http://nodejs.org/dist/v0.8.23/node-v0.8.23.tar.gz 
     gyp http 200 http://nodejs.org/dist/v0.8.23/node-v0.8.23.tar.gz 
     make: Entering directory `/tmp/build_1uw8vrtz5u7yu/node_modules/dnode/node_modules/weak/build' 
     CXX(target) Release/obj.target/weakref/src/weakref.o 
     SOLINK_MODULE(target) Release/obj.target/weakref.node 
     SOLINK_MODULE(target) Release/obj.target/weakref.node: Finished 
     COPY Release/weakref.node 
     make: Leaving directory `/tmp/build_1uw8vrtz5u7yu/node_modules/dnode/node_modules/weak/build' 

     > [email protected] install /tmp/build_1uw8vrtz5u7yu/node_modules/shoe/node_modules/sockjs/node_modules/rbytes 
     > node-waf configure build 

     Checking for program g++ or c++   : /usr/bin/g++ 
     Checking for program cpp     : /usr/bin/cpp 
     Checking for program ar     : /usr/bin/ar 
     Checking for program ranlib    : /usr/bin/ranlib 
     Checking for g++       : ok 
     Checking for node path     : not found 
     Checking for node prefix     : ok /tmp/node-node-Rkll 
     'configure' finished successfully (0.027s) 
     Waf: Entering directory `/home/dcaclab/RubymineProjects/nodejs_consumer/node_modules/shoe/node_modules/sockjs/node_modules/rbytes/build' 
     Waf: Leaving directory `/home/dcaclab/RubymineProjects/nodejs_consumer/node_modules/shoe/node_modules/sockjs/node_modules/rbytes/build' 
     Traceback (most recent call last): 
     File "/tmp/node-node-Rkll/bin/node-waf", line 16, in <module> 
      Scripting.prepare(t, os.getcwd(), VERSION, wafdir) 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Scripting.py", line 145, in prepare 
      prepare_impl(t, cwd, ver, wafdir) 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Scripting.py", line 135, in prepare_impl 
      main() 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Scripting.py", line 188, in main 
      fun(ctx) 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Scripting.py", line 386, in build 
      return build_impl(bld) 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Scripting.py", line 405, in build_impl 
      bld.compile() 
     File "/tmp/node-node-Rkll/bin/../lib/node/wafadmin/Build.py", line 268, in compile 
      os.chdir(self.bldnode.abspath()) 
     OSError: [Errno 2] No such file or directory: '/home/dcaclab/RubymineProjects/nodejs_consumer/node_modules/shoe/node_modules/sockjs/node_modules/rbytes/build' 
     npm ERR! weird error 1 
     npm ERR! not ok code 0 
!  Failed to rebuild dependencies with npm 
!  Heroku push rejected, failed to compile Node.js app 

To [email protected]ku.com:dcaclab-simulator.git 
! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to '[email protected]:dcaclab-simulator.git' 

回答

2

所以rbytes包已被保留2年,在這段時間節點已經從切換node-waf構建系統爲node-gyp。從節點v0.10.0開始,不再包含node-waf因此sh: node-waf: not found錯誤消息。我覺得你有幾個選項(按優先順序排列):

  1. 使用更現代的模塊,而不是rbytes已
  2. 說服rbytes已的作者更新到支持最近的節點,併發佈一個新版本
  3. 叉rbytes已和修復它自己
  4. 設置你的package.json引擎節點0.8,然後再試一次

編輯

那麼,錯誤消息#2仍然看起來像rbytes無法正確構建。我必須深入研究這個包,特別是要了解錯誤。不知道如何/爲什麼它在本地爲您工作,但在heroku上有問題,但我認爲是時候讓rbytes維護人員進行一些維護。

+0

謝謝,基本上我會嘗試節點0.8,以後,我會聯繫作者rbyes更新他們的模塊。 – simo

+0

請參閱上面的編輯 – simo

3

我的在Ubuntu最新版本的node.js的全新編譯後出現此問題。根據Peter Lyon的建議,這個問題與node-gyp不在身邊有關。通常,從預編譯的軟件包安裝時,這不是問題(aptitude和默認情況下rhel repos通常包含node-gyp)。

但是,如果您從源代碼構建,則很可能不存在node-gyp,這是導致此問題的原因。

這解決了這個問題對我來說:

sudo npm install -g node-gyp 

之後,運行安裝NPM工作正常,錯誤消失了!

0

我面臨同樣的問題,只是刪除現有的node_module目錄。然後運行npm install。這就是它