深入出不來nodejs源碼-編譯啟動


  整整弄了兩天,踩了無數的坑,各種奇怪的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++啟動一次實在是太久了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM