Node 10.0.0でgulpクラッシュ
起きた問題
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でも問題が上がっていました。
- Native crash in Node 10 https://github.com/gulpjs/gulp/issues/2162
- node asserts in node_contextify.cc:631 Assertion `args[1]->IsString()' failed https://github.com/nodejs/node/issues/20325
上段のページのコメントに答えがありました。
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でプロジェクトフォルダをそのまま同期して複数台で環境を共有しているため、旧環境を引き継ぐことを優先していました。
とはいえ、スッキリと新しい環境にしたかったこともあり削除 → 再インストールを試しましたが、原因を探ってみることで仕組みも理解できてきたので、エラーから学ぶことも多いと実感しています。
Author And Source
この問題について(Node 10.0.0でgulpクラッシュ), 我々は、より多くの情報をここで見つけました https://qiita.com/yokokouji/items/b2e23e005be697208819著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .