3

初めての Node.js pp を開発しました。今のところ、ラップトップに置いてあります。

開発中に、いくつかのモジュールをインストールする必要がありました。

npm install socket.io
npm install mysql@2.0.0-alpha3
npm install iniparser
npm install js-yaml
npm install nodemailer

グローバルではなく、すべて「プロジェクトごと」にインストールしました。

私のプロジェクトのディレクトリは次のようになります (私のコードはすべて push_server.js にあります):

|
|--- push_server.js
|
|--- node_modules
     |--- iniparser
     |--- js-yaml
     |--- mysql
     |--- socket.io
     |--- nodemailer

次に、このプロジェクトを運用サーバーにプッシュします。

私の質問は: コードベース全体 (インストールされたモジュールを含む) をアップロードできますか?それとも、アプリのコードだけをアップロードして、サーバーにモジュールを 1 つずつ再インストールする必要がありますか?

注: 私の開発マシンは Ubuntu 10.04 を実行し、運用サーバーは CentOS 5.3 を実行します

これらのモジュールはすべて js ファイルのみで構成されていると思いますので、問題ないはずです。
ただし、npm によってインストールされたモジュールがローカル マシン上で一部のコードをコンパイルする可能性はありますか。したがって、そのコードは別のマシンでは機能しない可能性があります。また、モジュールがそれを行うかどうかをどのように知ることができますか?

質問がばかげていないことを願っています-私はNode.jsを始めたばかりです。

ありがとう。

4

2 に答える 2

2

node_modules可能であれば、必ずコピーする必要があります。

サーバーでそれらを再ダウンロードすると、使用中のモジュールのバージョンがわずかに異なる可能性があります。厳密なモジュール バージョン X が必要な場合でも、そのモジュールは再び他のモジュール Y Z へのワイルドカード依存関係を持つことができます。これは、Y が更新されてサーバーに公開された場合、使用したものとは異なる Y のコードを使用して実行されることを意味します。ローカルでのテストと検証に。

場合によっては、作成者が何らかの理由でパッケージを非公開にすることを決定したため、展開時に必要なモジュールを利用できない場合もあります。

于 2012-10-18T13:23:21.397 に答える
0

必要なモジュールの最新バージョンを常に使用するようにしています。Node.js はまだ非常に新しく、モジュールが更新されるたびに、バグ修正や速度の向上などがもたらされることがよくあります。モジュールをローカルにインストールし、コードをテストして、最終的に本番環境で使用します。でインストールすると、ファイルnpm install module --saveに自動的に追加されます。package.jsondependencies

gitバージョン管理と展開に使用して、通常、node_modulesフォルダーを.gitignoreファイルに入れます。したがって、サーバーにアップロードされません。サーバー上で実行するだけでnpm install、必要なモジュールをすべてインストールできます。これは、モジュールを 1 つずつインストールするよりもはるかに高速です。

このワークフローはherokuでも使用されます。

于 2012-10-18T15:13:29.077 に答える