2

node.js アプリを Cloudfoundry にデプロイしています。唯一のモジュールの依存関係は restify です。ローカルの node_modules ディレクトリでプッシュしようとしましたが、cloudfoundry.json で npm Shrinkwrap と 'ignoreModules' も使用しましたが、常に stdout.log で次のようになります。

{ stack: [Getter/Setter],
  arguments: undefined,
  type: undefined,
  message: '/var/vcap/data/dea/apps/myapp-0-6f9cf62f9bbe58f5d2eb13a94acb5d3a/app/node_modules/restify/node_modules/dtrace-provider/build/Release/DTraceProviderBindings.node: invalid ELF header' }

何か案は?前もって感謝します :)

編集:申し訳ありませんが、「無視*ノード*モジュール」を意味します

4

2 に答える 2

2

私の推測では、モジュールはローカル アーキテクチャ (x86 など) 用にコンパイルされており、それを実行しようとしているサーバーは別のアーキテクチャ (64 ビットなど) です。ノード モジュールには、npm がビルドを処理する C++ 拡張機能を含めることができます。必ずしも node_modules フォルダー内のバイナリをあるプラットフォームから別のプラットフォームに移動できるとは限りません。それらを再コンパイルする必要があります。

Cloudfoundry については、その方法を説明できるほど詳しくありませんが、他の誰かがより良い答えを持っていることを願っています。

于 2012-09-25T23:18:07.860 に答える
0

開発用 Docker 環境をセットアップする際にも同様の問題がありました。ソース ファイルを docker イメージにマウントしたかったのですが、docker イメージ用に node_modules ディレクトリをコンパイルしました。Docker イメージ上に新しいディレクトリを作成し、npm installそのディレクトリ内にソース コードの一部にソフト リンクを使用すると、同じ動作が見られました。

解決策: ソフト リンクを使用しないでください。

于 2014-10-31T16:34:13.827 に答える