4

heroku で socket.io アプリをコンパイルする際に問題が発生しています。

それがapp.jsファイルです

var app = require('express').createServer()
   , io = require('socket.io').listen(app.listen(process.env.PORT || 5000));

app.get('/', function (req, res) {
    res.sendfile(__dirname + '/index.html');
});

var users = [];

  io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
});

io.sockets.on('connection', function (socket) {

  socket.on('message',function(data,time,username){


    socket.broadcast.emit('message',data,time,username);

    socket.emit('message',data,time,username,true);
  });

  socket.on('connected',function(username){

    socket.nick = username;

    users.push(username);

    io.sockets.emit('user_connected',users);
  });

  socket.on('disconnect',function(){

    users.splice(users.indexOf(socket.nick), 1);

    socket.broadcast.emit('updated_user_list',users);
  });

});

パッケージ.json

{
  "name": "application-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "engines": {
    "node": "0.8.x",
    "npm":  "1.1.x"
  },
  "dependencies": {
    "express": "3.0.0rc1",
    "jade": "*",
    "socket.io": "~0.9.8"
  }
}

そして、それをherokuにプッシュするときのエラーです

[gaggina:~/Desktop/socket2]→git push heroku master
Counting objects: 1016, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (892/892), done.
Writing objects: 100% (1016/1016), 3.90 MiB | 104 KiB/s, done.
Total 1016 (delta 74), reused 0 (delta 0)

-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
       Using Node.js version: 0.8.3
       Using npm version: 1.1.41
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
       npm WARN package.json application-name@0.0.1 No README.md file found!
       npm WARN package.json jade@0.26.3 No README.md file found!
       npm WARN package.json application-name@0.0.1 No README.md file found!
       npm WARN package.json jade@0.26.3 No README.md file found!
       npm WARN package.json connect@2.4.1 No README.md file found!
       npm WARN package.json methods@0.0.1 No README.md file found!
       npm WARN package.json hiredis@0.1.14 No README.md file found!

       > ws@0.4.21 install /tmp/build_3gzqoe2cjr234/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 extension compilation successful!

       > hiredis@0.1.14 preinstall /tmp/build_3gzqoe2cjr234/node_modules/socket.io/node_modules/redis/node_modules/hiredis
       > make || gmake

       cd deps/hiredis && make static
       make[1]: Entering directory `/tmp/build_3gzqoe2cjr234/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_3gzqoe2cjr234/node_modules/socket.io/node_modules/redis/node_modules/hiredis/deps/hiredis'
       node-waf configure build
       Setting srcdir to                        : /tmp/build_3gzqoe2cjr234/node_modules/socket.io/node_modules/redis/node_modules/hiredis 
       Setting blddir to                        : /tmp/build_3gzqoe2cjr234/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-de4o 
       'configure' finished successfully (1.834s)
       Waf: Entering directory `/Users/gaggina/Desktop/socket2/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build'
       Waf: Leaving directory `/Users/gaggina/Desktop/socket2/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build'
       Traceback (most recent call last):
         File "/tmp/node-node-de4o/bin/node-waf", line 16, in <module>
           Scripting.prepare(t, os.getcwd(), VERSION, wafdir)
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Scripting.py", line 145, in prepare
           prepare_impl(t, cwd, ver, wafdir)
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Scripting.py", line 135, in prepare_impl
           main()
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Scripting.py", line 188, in main
           fun(ctx)
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Scripting.py", line 386, in build
           return build_impl(bld)
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Scripting.py", line 405, in build_impl
           bld.compile()
         File "/tmp/node-node-de4o/bin/../lib/node/wafadmin/Build.py", line 268, in compile
           os.chdir(self.bldnode.abspath())
       OSError: [Errno 2] No such file or directory: '/Users/gaggina/Desktop/socket2/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build'
       make: *** [all] Error 1
       sh: gmake: not found
       npm ERR! hiredis@0.1.14 preinstall: `make || gmake`
       npm ERR! `sh "-c" "make || gmake"` failed with 127
       npm ERR! 
       npm ERR! Failed at the hiredis@0.1.14 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! System Linux 2.6.32-343-ec2
       npm ERR! command "/tmp/node-node-de4o/bin/node" "/tmp/node-npm-Xp2N/cli.js" "rebuild"
       npm ERR! cwd /tmp/build_3gzqoe2cjr234
       npm ERR! node -v v0.8.3
       npm ERR! npm -v 1.1.41
       npm ERR! code ELIFECYCLE
       npm ERR! stack Error: hiredis@0.1.14 preinstall: `make || gmake`
       npm ERR! stack `sh "-c" "make || gmake"` failed with 127
       npm ERR! stack     at ChildProcess.<anonymous> (/tmp/node-npm-Xp2N/lib/utils/exec.js:56:20)
       npm ERR! stack     at ChildProcess.EventEmitter.emit (events.js:91:17)
       npm ERR! stack     at Process._handle.onexit (child_process.js:674:10)
       npm ERR! 
       npm ERR! Additional logging details can be found in:
       npm ERR!     /tmp/build_3gzqoe2cjr234/npm-debug.log
       npm ERR! not ok code 0
 !     Failed to rebuild dependencies with npm
 !     Heroku push rejected, failed to compile Node.js app

To git@heroku.com:boiling-beyond-2052.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:boiling-beyond-2052.git'
[gaggina:~/Desktop/socket2]→cat /tmp/build_3gzqoe2cjr234/npm-debug.log
cat: /tmp/build_3gzqoe2cjr234/npm-debug.log: No such file or directory
4

6 に答える 6

2

Heroku は、hiredis の構築に失敗しています。その理由は、hiredis (node.js モジュール) が、slug では利用できない GNU make を必要とするhiredis (C ライブラリ) に依存しているためです。

質問は、NPM が依存関係にないのに、なぜ Hiredis を構築しようとしているのですか?

プロジェクトのどこかにhiredisが表示されているかどうかを確認する必要があります( grep -R hiredis .)。もう 1 つの可能性は、Heroku がすべての node.js アプリに redis を提供しようとしているということですか?

Heroku のサポートに確認します。

于 2012-08-03T13:51:56.480 に答える
0

WAAAAAAAITASECOND。

実行した後grep -R hiredis .、ディレクトリの下に./node_modules/socket.io/node_modulesフォルダが表示されていることに気付きましたredis。どうやら、Herokuを台無しにするビルトインでsocket.io出荷されているようです。redis

redisフォルダからフォルダを削除して、だましてみてください。socket.ioを完全に削除することで問題を解決しました。socket.ionode_modules

于 2013-03-11T22:45:13.490 に答える
0

グーグルで調べましたが、解決策が見つかりませんでしたが、以下のようにコードを変更しようとしたところ、動作し始めました...

var express = require('express'),
    app = express(), 
    server = require('http').createServer(app),
    io = require('socket.io').listen(server),

var port = process.env.PORT || 5000; // Use the port that Heroku provides or default to 5000

server.listen(port, function() {
});

io.configure(function () {
    io.set("transports", ["xhr-polling"]);
    io.set("polling duration", 10);
    io.set("log level", 1);
});

あなたが同じ問題を抱えていて、まだ成功していない場合はお知らせください..

于 2013-08-23T06:51:12.947 に答える
0

herokuをいじっているときに同じ問題に遭遇していました。すべてのパスがそこにあるように見えました。Ubuntu 12.04 を実行していて、gmake のシンボリック リンクも作成しました。何も修正されませんでした。私は最終的にこれを試しました

"dependencies": {
  "express": "3.0.0rc2",
  "ejs": "*",
  "stylus": "*",
  "mongojs": "0.4.3"
},
"bundledDependencies": {
  "socket.io": "*"
},

それ以外の

"dependencies": {
  "express": "3.0.0rc2",
  "ejs": "*",
  "stylus": "*",
  "mongojs": "0.4.3",
  "socket.io": "*"
},

そして、これはそれを修正し、herokuを幸せにしたようです。適切な解決策を見つけたら、私に知らせてください。

于 2012-08-14T14:14:35.863 に答える
0

ローカルで実行するnpm installと、hiredis はマシンに固有のパスを持ついくつかのファイルを作成します。これらのキャッシュされた依存関係を Heroku にプッシュすると、ビルドは失敗します。

Waf: Entering directory `/Users/gaggina/Desktop/socket2/node_modules/socket.io/node_modules/redis/node_modules/hiredis/build'

この問題はnode_modules/hiredis、ソース管理からディレクトリを削除し、Heroku に新たにコンパイルさせることで回避できます。

git rm -rf node_modules/hiredis
rm -rf node_modules/hiredis
echo "node_modules/hiredis" >> .gitignore
于 2013-03-15T07:44:25.070 に答える
0

deploy nodejs to heroku に同様の質問への回答を投稿しましたが、問題は解決したようです。

基本的に、0.9.8 の代わりに socket.io 0.9.6 を使用してみてください。

于 2012-08-14T14:48:58.127 に答える