2012-08-14 161 views
2

我跟着入門指南的應用程序的NodeJS部署到Heroku的:https://devcenter.heroku.com/articles/nodejs部署到的NodeJS的Heroku

它工作得很好,直到git push heroku master。這終止於以下輸出:

git push heroku master 
Counting objects: 1018, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (894/894), done. 
Writing objects: 100% (1018/1018), 4.03 MiB | 64 KiB/s, done. 
Total 1018 (delta 75), reused 0 (delta 0) 

-----> Heroku receiving push 
-----> Node.js app detected 
-----> Resolving engine versions 
     Using Node.js version: 0.6.20 
     Using npm version: 1.0.106 
-----> Fetching Node.js binaries 
-----> Vendoring node into slug 
-----> Installing dependencies with npm 


     > [email protected] install /tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws 
     > node install.js 

     [ws v0.4.21] Attempting to compile blazing fast native extensions. 
     [ws v0.4.21] Native code compile failed (but the module will still work): 
     [ws v0.4.21] The native extensions are faster, but not required. 
     [ws v0.4.21] On Windows, native extensions require Visual Studio and Python. 
     [ws v0.4.21] On Unix, native extensions require Python, make and a C++ compiler. 
     [ws v0.4.21] Start npm with --ws:verbose to show compilation output (if any). 

     > [email protected] preinstall /tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/redis/node_modules/hiredis 
     > make || gmake 

     cd deps/hiredis && make static 
     make[1]: Entering directory `/tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis' 
     make[1]: Nothing to be done for `static'. 
     make[1]: Leaving directory `/tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis' 
     node-waf configure build 
     Setting srcdir to      : /tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/redis/node_modules/hiredis 
     Setting blddir to      : /tmp/build_ngyi26sy7e54/node_modules/socket.io/node_modules/redis/node_modules/hiredis/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-Wyfk 
     'configure' finished successfully (0.029s) 
     Waf: Entering directory `/home/lhk/Desktop/zwillenhomepage/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build' 
     Waf: Leaving directory `/home/lhk/Desktop/zwillenhomepage/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build' 
     Traceback (most recent call last): 
     File "/tmp/node-node-Wyfk/bin/node-waf", line 16, in <module> 
      Scripting.prepare(t, os.getcwd(), VERSION, wafdir) 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Scripting.py", line 145, in prepare 
      prepare_impl(t, cwd, ver, wafdir) 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Scripting.py", line 135, in prepare_impl 
      main() 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Scripting.py", line 188, in main 
      fun(ctx) 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Scripting.py", line 386, in build 
      return build_impl(bld) 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Scripting.py", line 405, in build_impl 
      bld.compile() 
     File "/tmp/node-node-Wyfk/bin/../lib/node/wafadmin/Build.py", line 268, in compile 
      os.chdir(self.bldnode.abspath()) 
     OSError: [Errno 2] No such file or directory: '/home/lhk/Desktop/zwillenhomepage/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build' 
     make: *** [all] Error 1 
     sh: gmake: not found 
     npm ERR! [email protected] preinstall: `make || gmake` 
     npm ERR! `sh "-c" "make || gmake"` failed with 127 
     npm ERR! 
     npm ERR! Failed at the [email protected] preinstall script. 
     npm ERR! This is most likely a problem with the hiredis package, 
     npm ERR! not with npm itself. 
     npm ERR! Tell the author that this fails on your system: 
     npm ERR!  make || gmake 
     npm ERR! You can get their info via: 
     npm ERR!  npm owner ls hiredis 
     npm ERR! There is likely additional logging output above. 
     npm ERR! 
     npm ERR! System Linux 2.6.32-343-ec2 
     npm ERR! command "/tmp/node-node-Wyfk/bin/node" "/tmp/node-npm-Rq2Y/cli.js" "rebuild" 
     npm ERR! cwd /tmp/build_ngyi26sy7e54 
     npm ERR! node -v v0.6.20 
     npm ERR! npm -v 1.0.106 
     npm ERR! code ELIFECYCLE 
     npm ERR! 
     npm ERR! Additional logging details can be found in: 
     npm ERR!  /tmp/build_ngyi26sy7e54/npm-debug.log 
     npm not ok 
!  Failed to rebuild dependencies with npm 
!  Heroku push rejected, failed to compile Node.js app 

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

我不知道如何解決這個問題。該應用程序仍然是一個準系統。我決定在heroku上運行並運行,然後逐步添加我想要的功能。它在localhost上運行得很好,npm安裝所有的依賴關係,沒有錯誤,並且Procfile甚至可以與工頭一起工作。我使用github創建了回購並將其克隆在我的機器上。部署到我的github帳戶可以毫無問題地工作。以下是回購鏈接https://github.com/lhk/zwillenhomepage

我該怎麼辦?

相關的package.json:

{ 
    "name": "zwillen-webseite", 
    "scripts": { 
    "start": "server.js" 
    }, 
    "version": "0.0.1", 
    "engines": { 
    "node": "0.6.x" 
    }, 
    "dependencies": { 
    "express": "3.0.x", 
    "socket.io": "0.9.8", 
    "jade": "0.27.0" 
    } 
} 

回答

5

基本上,上下文中的hiredis模塊被socket.io使用。

如果你參考eis的答案中提到的線程,你會發現你們都在使用socket.io 0.9.8。

嘗試使用0.9.6(我在heroku上使用它,並從未有過這樣的問題)。

+0

解決此問題的完整答案。謝謝 – lhk 2012-08-14 12:35:05

+0

很奇怪。我有與socket.io 0.9.10相同的錯誤,降級到0.9.6修復它。謝謝!根據這個https://github.com/LearnBoost/socket.io/issues/1030,他們已經在最近一次提交中刪除了redis,所以錯誤很快就會消失。 – codemonkey 2012-10-04 10:34:12

+0

謝謝你,本來沒有機會 – 2012-10-09 15:25:34

1

基本上它試圖編譯hiredis和失敗。這是故意的,你需要嗎?你的應用中有沒有提及hiredis?如果是這樣,那可能是罪魁禍首。如果沒有,我會嘗試聯繫Heroku支持。請參閱this thread