Unity2017.1にバージョンアップ後、WebGLへのビルドが IL2CPP のビルド時にエラーが発生するようになりました。OSはWindows7です。ログを見ると、以下のようなエラーが表示されていました。
stdout: Building build.bc with EmscriptenToolChain. Output directory: C:\Users\Public\Documents\Unity Projects\webgl2017test\Temp\StagingArea\Data\Native Cache directory: C:\Users\Public\Documents\Unity Projects\webgl2017test\Library\il2cpp_cache il2cpp.exe didn't catch exception: Unity.IL2CPP.Building.BuilderFailedException: INFO:root:Checking JS engine ['O:/Program Files/Unity 2017.2.0b4/Editor/Data\\Tools\\nodejs\\node.exe', '--stack_size=8192', '--max-old-space-size=2048'] failed. Check your config file. Details: Expected the command ['O:/Program Files/Unity 2017.2.0b4/Editor/Data\\Tools\\nodejs\\node.exe', '--stack_size=8192', '--max-old-space-size=2048', 'O:\\Program Files\\Unity 2017.2.0b4\\Editor\\Data\\PlaybackEngines\\WebGLSupport\\BuildTools\\Emscripten\\src\\hello_world.js'] to finish with return code 0, but it returned with code -1073741819 instead! Output: WARNING:root:did not see a source tree above or next to the LLVM root directory (guessing based on directory of O:\Program Files\Unity 2017.2.0b4\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten_FastComp_Win\llc), could not verify version numbers match INFO:root:(Emscripten: Running sanity checks) CRITICAL:root:The JavaScript shell used for compiling (['O:/Program Files/Unity 2017.2.0b4/Editor/Data\\Tools\\nodejs\\node.exe', '--stack_size=8192', '--max-old-space-size=2048']) does not seem to work, check the paths in O:\Program Files\Unity 2017.2.0b4\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\emscripten.config
原因
一時的に作成されるbuild.bc
というファイルが生成されないというエラーですが、実際の原因はnode
実行時の--stack_size=8192
オプションがエラーを起こすことでした。試しにコマンドラインで実行してもエラーが発生することを確認しました。
そこで、ビルドが成功していたUnity5.6.2にバンドルされているnode 0.12.7
で同じくnode --stack_size=8192
を呼び出すと、こちらは実行できました。
それほど、エラー報告を目にしていないので、常に発生する問題ではないようですが、Windows7か、環境変数など、何らかの影響でエラーになるようです。
解決策
node.exeは、インストールフォルダー(C:\Program Files\Unity201701
など)内の、Editor\Data\Tools\nodejs
フォルダー内に入っています。念のため、そのフォルダー内のnode.exe
をnode.bk.exe
などに名前を変更するなどして、とっておくとよいでしょう。
Unity5.6.2がインストールされていたら、Unity5.6.2のインストールフォルダー(C:\Program Files\Unity562
など)から、Editor\Data\Tools\nodejs
フォルダー内のnode.exe
を、Unity2017.1の同様のフォルダー内のnode.exe
と置き換えれば直りました。
Unity5.6.2をすでにアンインストールしていましたら、こちらから、該当するOS用のインストーラーをダウンロードしてインストールして、インストール先のフォルダーからnode.exe
を上書きしてください。
注意点
スタックの容量が何らかの原因で確保できないのが原因なので、nodeのその辺の設定方法があれば、スタックサイズを増やせば直るかも知れません。ちょっとそこまで調べきれていないので、よい方法があればご教示いただければ幸いです。