Edited at

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


関連記事