7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuでNode使っていたらナニモシテナイのに壊れた

Last updated at Posted at 2018-12-02

linebotづくりでHerokuを使っていた。

現象

ある日herokuにpushしたらlinebotが動かなくなった。
heroku logs --tailでログを確認すると以下のエラー。

internal/modules/cjs/loader.js:582
    throw err;
    ^

Error: Cannot find module 'react-dev-utils/crossSpawn'
...

自身のコードを実績あるところまで戻しても同様。ナニモシテナイのに!!

原因

npm install --save-dev "request"でインストールしたrequestモジュールが動かなくなってた。

解決

npm uninstall --save-dev request
npm install --save request

としたら動くようになった。

追いログ

herokuのNode.jsトラブルシューティングを見ると、ヒントになる記事があった。
記事曰く、herokuはpushのたびに以下のコマンドを実施するらしい。

$ rm -rf node_modules
$ npm install --quiet --production
$ npm start


これをローカル環境で実施すると、確かに同じ現象が発生した。
`npm install --quiet --production`
としていて、これだと`devDependencies`(--save-devでインストールしてるほう)のインストールをしてくれないらしい。

## なんである日動かなくなったのか

~~正直謎。~~

~~動作で使うモジュールを`--save-dev`していたのは問題だ。でも最初はそれでも動作していたのに、ある日動かなくなった。~~
~~気づいたのは、ローカルのnodeがversion 8でherokuも同じだったが、herokuのmasterが11月1日にnodeのversion 10に上がってた。(この前後で動く・動かないが変わっていた)~~
~~>Author: Jeremy Morrell <morrell.jeremy@gmail.com>~~
~~>Date:   Thu Nov 1 10:37:28 2018 -0700~~
~~>~~
~~>    Update to the latest LTS version of Node~~

~~これが影響している気もしたのだが、`npm`の`production`オプションは前からある。~~

~~結局**突然動かなくなった原因**はわからなかった。~~
~~ただログから追うことができたので、追い方は分かった。~~

分かった。私のせいだ(当然)。
Herokuのサンプルをそのまま改変して使っていたが、Herokuのサンプルでは`request`が`devDependencies`に入っている。
`npm install`して開発を開始したが、途中`require(request)`する修正を入れた。
ローカル環境では`npm install`してあるのでnode_modules配下に`request`が存在するから何もせず使えていたが、リモート環境は`npm install --quiet --production`でやるから`request`がなくエラーになっていた。
7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?