1. ホーム
  2. git

[解決済み] HerokuでNode.jsアプリを作成する場合、Gitに「node_modules」フォルダをチェックインした方が良いですか?

2022-03-25 09:46:40

質問

基本的な はじめに Node.js on Herokuの説明はこちらです。

https://devcenter.heroku.com/categories/nodejs

これらの命令は、.gitignore node_modules を作成するように指示していないため、フォルダ ノードモジュール をGitにチェックインする必要があります。 私が node_modules をGitリポジトリに登録すると、私のスタートアップアプリケーションは正しく動作しました。

でのより高度な例に従ったところ。

フォルダを追加するように指示されました。 ノードモジュール をファイル .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 は、依存関係ツリーを完全にロックするために使用します。

https://docs.npmjs.com/cli/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