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
「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 ターゲット
/home/ユーザ名/node_modules/node-sass/lib/binding.js:15
throw new Error(errors.missingBinary());
^
Error: Missing binding /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 (/home/ユーザ名/node_modules/node-sass/lib/binding.js:15:13)
at Object.<anonymous> (/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> (/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
これで正常に戻りました。