2

npmなしでサーバーにデプロイするノードアプリのパッケージ化に取り組んでいます。私はそれを理解したと信じています-package.jsonファイルに従って、npmを使用してすべての依存関係をローカルのnode_modulesフォルダーにインストールしました。

すべて正常に動作しているように見えますが、サーバーからノード ファイルを実行しようとすると、Cannot find module '../build/Release/contextify'.

node_modules/.npm/contextify/0.0.4/package/lib/contextify.jsでは、問題のファイルを要求し、 というnode_modules/.npm/contextify/0.0.4/package/buildディレクトリがないため、これは理にかなっていますRelease。npm がリリースをビルドしていないだけだと思ったので、dev マシンに切り替えて実行しましたnpm install

$ sudo npm install

> contextify@0.0.4 preinstall /path/to/node/stuff/node_modules/contextify
> node-waf clean || true; node-waf configure build

'clean' finished successfully (0.014s)
Setting srcdir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package 
Setting blddir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/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 /usr/local/Cellar/node/0.4.5 
'configure' finished successfully (0.043s)
Waf: Entering directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
[1/2] cxx: src/contextify.cc -> build/default/src/contextify_1.o
[2/2] cxx_link: build/default/src/contextify_1.o -> build/default/contextify.node
Waf: Leaving directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
'build' finished successfully (0.370s)

残念ながら、ディレクトリにはまだフォルダーpackage/buildがありません。Release

したがって、問題は、ノードパスが設定されていないために contextify がビルドに失敗している場合 (試してみexport NODE_PATHましたが、役に立たなかったようです...)、または contextify が機能しない他の理由がある場合です。構築しているように見えます。

多分私はもっと大きなものを見逃していますか?

4

3 に答える 3

3

このエラーの修正は、waf の "build" ディレクトリを削除してから再構成することです。どういうわけか、NODE_PATH が欠落しているため、waf は不適切な構成結果をキャッシュするため、それを覚えて設定しても、configure がエラーを報告していないにもかかわらず、実際には何もコンパイルされません。馬鹿な!

export NODE_PATH="/usr/local/lib/node_modules/"
rm -fr build
node-waf configure
node-waf build
于 2012-06-28T07:24:59.843 に答える
3

私も同じように悩んでいるのですが、

問題を github に追加することをお勧めします。作成者はここよりも早くあなたを助けることができるかもしれません。 https://github.com/brianmcd/contextify/issues?sort=created&direction=desc&state=closed&page=1

于 2011-09-01T20:47:27.023 に答える
1

nodejs のローカル バージョンは v.0.4.* で、サーバー バージョンの nodejs は v0.5.* だと思います。

開発用と本番用に同じバージョンの nodejs を使用していることを確認してください。v0.4.* に切り替えれば、問題は解決するはずです。5.* バージョンのどこかで、node-waf の「ビルド」構成が「デフォルト」から「リリース」に切り替えられていることに気付きました。

ただし、1 つの警告:

一部の npm パッケージは (コンパイルされた) バイナリを使用しています。IMO、「コンパイル済み」の node_modules を 1 つのパッケージにバンドルして、npm なしで「別の」プラットフォームにデプロイするべきではありません。問題が発生するのは時間の問題です。(上記のように)

于 2011-09-17T10:11:17.373 に答える