整整弄了兩天,踩了無數的坑,各種奇怪的error,最後終於編譯成功了。 網上的教程基本上都過時了,或者是版本不對,都會報一些奇怪的錯誤,這裡總結一下目前可行的流程。 node版本:v10.1.0。 首先需要一些準備工作: 1、Visual Studio 2017 傳送門:https://www.vi ...
整整弄了兩天,踩了無數的坑,各種奇怪的error,最後終於編譯成功了。
網上的教程基本上都過時了,或者是版本不對,都會報一些奇怪的錯誤,這裡總結一下目前可行的流程。
node版本:v10.1.0。
首先需要一些準備工作:
1、Visual Studio 2017 傳送門:https://www.visualstudio.com/zh-hans/downloads/
2、python2.7 傳送門:https://www.python.org/downloads/release/python-2715/
3、NASM 傳送門:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/win64/
4、Git bash 傳送門:https://git-scm.com/downloads
全部安裝完,然後記得給python與NASM添加環境變數。
接下來就是把node的源碼給down下來,傳送門:https://nodejs.org/en/download/current/
這個LTS還是current自己選,反正點那個下載源碼的按鈕:
把東西弄下來解壓到一個地方,然後雙擊文件夾裡面的vcbuild.bat:
可以在這個批處理文件打個斷點,可以發現輸出信息如下:
腳本的開始都是在檢測是否有預裝對應的工具,然後調用其餘的批處理文件進行編譯。
這個時間會比較長,可以先去吃個飯。你會發現文件夾在逐漸變大,最後大概有個20G……
編譯完成後,文件夾會有一個node.sln,在VS2017中選擇文件-打開-項目/解決方案,雙擊這個文件,會把node項目給引到IDE中去。
這時如果直接點擊開始調試,可能會出現以下問題:
這是因為項目的預設啟動項設成了目錄的第一個,右鍵解決方案,點擊設置自動項目:
選擇單啟動項目,把那個cares改成node:
這樣就可以開始啟動node項目,時間非常的長……
這時候再次點擊開始調試,可能又會出現以下錯誤:
彈窗其實是個幌子,真正的錯誤是控制台報錯,這個Debug是一個類似於webpack打包的環境變數,有Debug和Release兩種,簡單全局搜索一下,可以發現用法都是類似這樣的:
我估計啊,OutDir就跟process.env一樣。
環境變數設置地點在IDE的菜單下麵:
而這個文件確實找不到,但是我在Release裡面發現了node.exe與那個失蹤的openssl.def。
解決辦法就是把Release文件夾里的opendssl.def複製到Debug文件夾中去,然後再次嘗試,node.exe文件會自動生成。這下應該就成了,當然,如果把環境變數換成Release也是OK的。
再再次點擊開始調試,又是一段非常長的時間,最後成功的話,理論上是會彈出一個node的REPL視窗,就是平時在cmd裡面輸入node指令的樣子,如下:
檢測一下是否讀取的是本地的代碼,打開node_main.cc,添加一個log代碼:
這次不點調試,太久了,點那個開始執行(不調試),可以看到輸出如下:
至此,已經可以對nodejs的源碼打log了,源碼之路的基石已經鋪好。
不知道有沒有類似於熱重載的功能,這C++啟動一次實在是太久了。