Windows
Node.js
.NET

Edge.jsをnodeのv9.x系で動かすには

背景

以前、イクメン系の記事として書いた

を、思い出し、試そうとしたら、動かなかった

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はそのまま放置。

SnapCrab_NoName_2017-11-10_16-54-2_No-00.png

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++がだいぶまともにつかえるようになってきたのかも。。

関連記事