[解決済み] HerokuでNode.jsアプリを作成する場合、Gitに「node_modules」フォルダをチェックインした方が良いですか?
質問
基本的な はじめに Node.js on Herokuの説明はこちらです。
https://devcenter.heroku.com/categories/nodejs
これらの命令は、.gitignore node_modules を作成するように指示していないため、フォルダ ノードモジュール をGitにチェックインする必要があります。 私が node_modules をGitリポジトリに登録すると、私のスタートアップアプリケーションは正しく動作しました。
でのより高度な例に従ったところ。
- Node.js、Ruby、MongoDB、Socket.IOでリアルタイムなポリグロットアプリケーションを構築する
- https://github.com/mongolab/tractorpush-server (ソース)
フォルダを追加するように指示されました。 ノードモジュール をファイル .gitignore . そこで、フォルダ ノードモジュール をGitから削除し、それをファイル .gitignore で、再デプロイしました。今度はこのようにデプロイに失敗しました。
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.8.2
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
Error: npm doesn't work with node v0.8.2
Required: [email protected] || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Error: npm doesn't work with node v0.8.2
Required: [email protected] || 0.5 || 0.6
at /tmp/node-npm-5iGk/bin/npm-cli.js:57:23
at Object.<anonymous> (/tmp/node-npm-5iGk/bin/npm-cli.js:77:3)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/tmp/node-npm-5iGk/cli.js:2:1)
at Module._compile (module.js:449:26)
Dependencies installed
-----> Discovering process types
Procfile declares types -> mongod, redis, web
-----> Compiled slug size is 5.0MB
-----> Launching... done, v9
heroku ps"を実行すると、クラッシュを確認。OK、問題なし。そこで、変更をロールバックして、フォルダ ノードモジュール を Git リポジトリに戻し、それをファイル .gitignore . しかし、元に戻した後も、デプロイ時に同じエラーメッセージが表示されますが、現在は再びアプリケーションが正常に実行されています。heroku ps"を実行すると、アプリケーションが実行されていることがわかります。
正しい方法は何ですか?インクルードフォルダー ノードモジュール それとも違うのか? そして、なぜロールバックしてもエラーメッセージが表示されるのでしょうか?私の推測では、Heroku側でGitリポジトリの状態が悪くなっているのだと思います。
解決方法は?
2回目の更新
FAQの公開を終了しました。
のドキュメントより
shrinkwrap
:
もしあなたがパッケージに含まれる特定のバイトをロックしたいのなら、例えばデプロイやビルドを100%確実に再現するために、依存関係をソース管理でチェックするか、バージョンではなく内容を確認できる他のメカニズムを追求すべきです。
ShannonとStevenは以前このことに触れましたが、私はこのことは受け入れられた答えの一部であるべきだと思います。
更新情報
以下の推薦文の出典はこちら
が更新されました。
. を推奨しなくなったそうです。
node_modules
フォルダーをコミットする必要があります。
通常は、ノーです。npmがあなたのパッケージの依存関係を解決できるようにします。
ウェブサイトやアプリなど、デプロイするパッケージには、npm shrinkwrap は、依存関係ツリーを完全にロックするために使用します。
オリジナル記事
参考までに、npm FAQがあなたの質問に明確に答えています。
<ブロッククオートウェブサイトなど、デプロイするものについては、gitにnode_modulesをチェックします。 とアプリを作成します。ライブラリやモジュールについては、node_modules を git にチェックしないでください。 再利用を意図しています。開発環境での依存関係の管理には、npmを使用します。 環境では使用できますが、デプロイメントスクリプトでは使用できません。
と、その根拠を知りたい方は、以下をご覧ください。 Mikeal Rogersの投稿 .
出典 https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
関連
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] [Solved] 作業ツリーのディレクトリ 'example.com' を作成できませんでした。パーミッションが拒否されました
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] 既存のHerokuアプリにフォルダをリンクさせる方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git, fatal: リモートエンドが予期せずハングアップしました。
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】gitが「変更をコミットするか、マージする前にstashしてください」と言うのを解決するには?
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] .gitignoreで一部のファイル以外を無視するようにする
-
[解決済み】Twitter Bootstrapをnpmでインストールする目的とは?
-
[解決済み】「node_modules」フォルダはgitリポジトリに含まれるべきか?