LoginSignup
21
15

More than 5 years have passed since last update.

Node 10.0.0でgulpクラッシュ

Last updated at Posted at 2018-05-21

起きた問題

MacBook ProのメンテナンスのついでにNode.jsのバージョンアップを行ったところ、旧環境で実行できていたgulpが下記のようにクラッシュして正常に動作しなくなってしまいました。

gulp[28017]: ../src/node_contextify.cc:631:static void node::contextify::ContextifyScript::New(const FunctionCallbackInfo<v8::Value> &): Assertion `args[1]->IsString()' failed.
 1: node::Abort() [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 2: node::InternalCallbackScope::~InternalCallbackScope() [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 3: node::contextify::ContextifyScript::New(v8::FunctionCallbackInfo<v8::Value> const&) [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 4: v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 5: v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<true>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 6: v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) [/Users/yokokoujiyoshihito/.nodebrew/current/bin/node]
 7: 0x8ad5688427d
 8: 0x8ad5688f755
 9: 0x8ad5690bc20
10: 0x8ad568944f7
11: 0x8ad568944f7
Abort trap: 6

環境

  • macOS High Sierra 10.13.4
  • node.js 10.0.0
  • nodebrew 8.9.4
  • npm 6.0.1
  • gulp 3.9.1

解決

プロジェクトフォルダ内のnode_modulesフォルダとpackage-lock.jsonを削除してから、npm installを実行します。

原因

不用意にOSのバージョンを上げたりnodeのバージョンを上げてしまったことが問題かと考え、旧環境に戻すことを検討していましたが、
(※幸いiMacも並行使用していたため、同一環境は残っていました。)
調べてみると下記のようにGitでも問題が上がっていました。

上段のページのコメントに答えがありました。

Find natives@^1.1.0 in your lock file
Change it to natives@^1.1.3

nativesのバージョンが古いことが原因でした。
package-lock.jsonを新旧で比較してみたところ、

    "natives": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
      "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
      "dev": true
    },

    "natives": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.3.tgz",
      "integrity": "sha512-BZGSYV4YOLxzoTK73l0/s/0sH9l8SHs2ocReMH1f8JYSh5FUWu4ZrKCpJdRkWXV6HFR/pZDz7bwWOVAY07q77g==",
      "dev": true
    },

このようにバージョンが上がっていました。
これを見つけるために時間がかかりましたが、無事解決してgulpも起動するようになりました。

未解決

gulpのクラッシュは解決しましたが、原因を探る過程で下記のような相違点が見つかりました。

"graceful-fs": {
  "version": "3.0.11",
  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
  "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
  "dev": true,
  "requires": {
    "natives": "^1.1.3"
  }
}
"graceful-fs": {
  "version": "3.0.11",
  "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
  "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
  "dev": true,
  "requires": {
    "natives": "^1.1.0"
  }
}

nativesの推奨バージョンが新旧で異なっています。
今のところ全体は問題なく動いていますので、別の機会に探ってみたいと思います。

補足

Dropboxでプロジェクトフォルダをそのまま同期して複数台で環境を共有しているため、旧環境を引き継ぐことを優先していました。
とはいえ、スッキリと新しい環境にしたかったこともあり削除 → 再インストールを試しましたが、原因を探ってみることで仕組みも理解できてきたので、エラーから学ぶことも多いと実感しています。

21
15
2

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
21
15