HTML - Autoprefixer - トラブルシュート - gulp がこける

 
1. 概要
2. 推測
3. npm update してみる
4. さらに調査
5. 再度実行

1. 概要

 先だってまで動作していた gulp が急にこけるようになりました。

gulp[37288]: ../src/node_contextify.cc:631:static void node::contextify::ContextifyScript::New(const FunctionCallbackInfo<v8::Value> &): Assertion `args[1]->IsString()' failed.
 1: node::Abort(void) [/usr/local/bin/node]
 2: node::Assert(char const* const[4]*) [/usr/local/bin/node]
 3: node::contextify::ContextifyScript::New(v8::FunctionCallbackInfo<node::contextify::ContextifyScript::New::Value> const&) [/usr/local/bin/node]
 4: v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) [/usr/local/bin/node]
 5: v8::internal::Isolate*<v8::internal::Object> v8::internal::Builtins::InvokeApiFunction(v8::internal::Isolate*, bool, v8::internal::Handle<v8::internal::HeapObject>(int, v8::internal::Object*, v8::internal::HeapObject) [/usr/local/bin/node]
 6: v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
アボート(coreを出力しました)
 gulpfile.js はいじっていないし、.scss ファイルも変更前の状態に戻してもやはりこける。

2. 推測

 ここからはまず推測。  node と npm のバージョンを調べてみます。

> pkg version -v -n node
node-10.0.0                        =   up-to-date with index

> pkg version -v -n npm
npm-5.8.0                          =   up-to-date with index
 「FreeBSD Ports」でそれらの更新時期をお見てみようと思いましたがこれはいささか古いですね。  ports の Makefile で更新日時を見てみます。  /usr/ports/www/node/Makefile が

# $FreeBSD: head/www/node/Makefile 468746 2018-04-30 22:46:56Z bhughes $
 /usr/ports/www/npm/Makefile が

# $FreeBSD: head/www/npm/Makefile 468777 2018-05-01 18:22:11Z sunpoet $
 最近の更新です。

3. npm update してみる

 火に油を注ぐような気がしないでもないが・・・。  npm update をはじめてやってみる。

> npm update
 なんか怪しげなメッセージが表示されたのですが・・・流れていったので記録していない・・・。  まぁ。最後の手段は全部インストールしなおせばよいので・・・。  で update したものの現象は解消せず。

4. さらに調査

 「Native crash in Node 10 #2162」てなとこをななめ読み。  一般ユーザ権限で

> gulp -v
[10:26:08] CLI version 3.9.1
[10:26:08] Local version 3.9.1
> node -v
v10.0.0
> npm update gulp
npm WARN npm npm does not support Node.js v10.0.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/
 う~ん。node 10.0.0 に gulp が対応していない?  2016年には 10.0.0 にはなっているように見えるが・・・?  ports に前のバージョンがあるか見てみます。

> ls -d /usr/ports/www/node*
/usr/ports/www/node  /usr/ports/www/node4  /usr/ports/www/node6  /usr/ports/www/node8
 gulp 以外で node を使用していないかなぁ・・・。  node 10.0.0 を削除して node8 をインストールしてみます。

プロンプト略
cd /usr/ports/www/node
make deinstall
cd /usr/ports/www/node8
make
make install

> node -v
v8.11.1
 うむ、バージョン 8.11.1 になりました。

5. 再度実行

 再度実行してみます。

> > gulp ターゲット
/usr/home/ユーザ名/node_modules/node-sass/lib/binding.js:15
      throw new Error(errors.missingBinary());
      ^

Error: Missing binding /usr/home/ユーザ名/node_modules/node-sass/vendor/freebsd-x64-57/binding.node
Node Sass could not find a binding for your current environment: FreeBSD 64-bit with Node.js 8.x

Found bindings for the following environments:
  - FreeBSD 64-bit with Node.js 10.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass --force` to build the binding for your current environment.
    at module.exports (/usr/home/ユーザ名/node_modules/node-sass/lib/binding.js:15:13)
    at Object.<anonymous> (/usr/home/ユーザ名/node_modules/node-sass/lib/index.js:14:35)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/home/ユーザ名/node_modules/gulp-sass/index.js:187:21)
 う~む、インストールしなおせと言われているようです。

> npm install
npm WARN ユーザ名@1.0.0 No description
npm WARN ユーザ名@1.0.0 No repository field.

up to date in 2.811s


   lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
   x                                     x
   x   Update available 5.8.0 → 6.0.0   x
   x     Run npm i -g npm to update      x
   x                                     x
   mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj


> npm rebuild node-sass --force

	メッセージ略

 これで正常に戻りました。