背景
まさか、Amazonのダッシュボタンでつくった子供向けのオニが来たぞボタンが動かなくなり、解決のためにVS2017を入れるとは思わなかった。 https://t.co/KZqNJIt0IV
— kjunichi (@kjunichi) 2017年11月10日
以前、イクメン系の記事として書いた
を、思い出し、試そうとしたら、動かなかった
node.jsでC#なコードを埋め込めるEdge.jsモジュールがnode v9.1.0に対応していない
というようなエラーメッセージが出力された。
edge.jsとは
という記事がQiitaにも上がっていた。
こちらの記事でどういうものかがわかると思う。
node-gyp入れてnpm rebuildしてもダメ
どうやら、edge.jsのビルドは独特で、通常のリビルドではなく、
windowsでは.batファイルでビルドすることが分かった。
(edge.jsのgithubのページにもよく読むと書いてある。。)
で、このやり方に従って、ビルドするもnullptrが変換できない!みたいなエラーがでる。
しかもこれ、node側のヘッダファイルで怒られるという始末。
Node v9.x系は多分使ってるV8がVS2017向けのものっぽい
Edge.jsの以下のissueを斜め読みすると、VS2017ではビルドが通るように記述があり、
ちょっと前にChromiumがVS2017でビルドするようになっており、Node.jsのv9.xの
V8も新しめのものを使っているはずで、VS2017でビルドされている気がした。
VS2017のコミュニティ版をいれた
VS2017のコミュニティ版をいれた。なんか別件でVS2015相当のC++のツールセット?を
入れられるみたいなことを目にしており、それっぽいオプションがあったので、追加してインストールした。VS2015はそのまま放置。
Edge.jsのtools\build.batの修正
最近使い始めたMS製?のMS版のchakuraエンジン版のnodeと切り替えることもできるらしいnvs環境だったので、その辺の変更
set GYP=%LOCALAPPDATA%\nvs\node\%3\%2\node_modules\node-gyp\bin\node-gyp.js
と今回メインとなるmsvsのバージョンを2015から2017に変更
"%NODEEXE%" "%GYP%" configure build --msvs_version=2017 -%FLAVOR%
を行い、
build release 9.1.0
で、無事edge.jsのモジュールがビルド出来た。
まとめ
WindowsでのC++がだいぶまともにつかえるようになってきたのかも。。