Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@yokokouji

Node 10.0.0でgulpクラッシュ

More than 1 year has passed since last update.

起きた問題

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

15
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?