深入出不来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++启动一次实在是太久了。
转载于:https://www.cnblogs.com/QH-Jimmy/p/9055637.html
深入出不来nodejs源码-编译启动相关推荐
- 深入出不来nodejs源码-V8引擎初探
原本打算是把node源码看得差不多了再去深入V8的,但是这两者基本上没办法分开讲. 与express是基于node的封装不同,node是基于V8的一个应用,源码内容已经渗透到V8层面,因此这章简述一下 ...
- 深入出不来nodejs源码-内置模块引入初探
重新审视了一下上一篇的内容,配合源码发现有些地方说的不太对,或者不太严谨. 主要是关于内置模块引入的问题,当时我是这样描述的: 需要关注的只要那个RegisterBuiltinModules方法,从名 ...
- libuv访问mysql_浅析libuv源码-编译启动
面试的间隙回头复习了一下node,感觉node就像一个胶带,把V8和libuv粘在了一起. V8毫无疑问,负责解析执行JavaScript,相当于语言层面的桥梁:而libuv则是负责操作系统底层功能的 ...
- redhad环境android源码编译,启动流程 | Android 开源项目 | Android Open Source Project...
建议的设备启动流程如下所示: 图 1. 启动时验证流程 适用于 A/B 设备的流程 如果设备使用的是 A/B 系统,则启动流程略有不同.必须先使用启动控件 HAL 将要启动的槽位标记为 SUCCESS ...
- Android源码编译详解【四】:Android 6.0_源码的下载与编译
1.AOSP源码下载 AOSP:即为"Android Open-Source Project"的缩写,中文意为 :"安卓开放源代码项目". Google官方 ...
- Android 源码编译详解【合集篇】
Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...
- Android源码编译及启动模拟器
Android源码编译及启动模拟器 源码下载 (1)更改下载源 (2)安装源码下载工具 (3)下载源码 (4)安装环境依赖 源码编译 启动模拟器 源码下载 Ubuntu18.0 (1)更改下载源 源码 ...
- Linux编译程序源码环境,Linux下对nodejs环境进行源码编译并部署云应用
Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言. 该环境安装非常简单,这里 ...
- nodejs源码_格物致知记一次nodejs源码分析的经历
昨天分析http模块相关的代码时,遇到了一个晦涩的逻辑,看了想,想了看还是没看懂.百度.谷歌了很多帖子也没看到合适的答案.突然看到一个题目有点相识的搜索结果,点进去是Stack Overflow上的帖 ...
最新文章
- 倒计时7天!博客之星虚位以待,Macbook等你来拿
- 计算机里面有鬼的恐怖游戏,2018年度十大最佳PC恐怖游戏
- AI 场景的价值体现——视觉 AI 技术落地实践
- SVN终端演练(个人开发\多人开发)
- 开发日记-20190914 关键词 汇编语言王爽版 第五章
- 犯罪心理解读Mybatis拦截器
- 10、Power Query-合并查询与追加查询结合应用
- 一个 Cobol 程序员的告白
- Gartner:2022年全球IT支出将超4万亿美元,软件增速最高
- 程序员界大杯具:蜗居中的小贝是搞C++ 的 !
- 数据库史上最大投资!Neo4j获3.25亿美元F轮融资
- linux普通用户修改root密码及获取root权限
- 2017年秋季学期获“领跑衫”感言
- 携号转网查询接口API,手机号码归属地及运营商查询接口
- 最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总
- oneNET连接配置参数说明
- 12-Factor App简介
- Yolov8如何在训练意外中断后接续训练
- 移植OpenHarmony到星空派ARM芯片【1】
- SQL命令讲解(二)
热门文章
- BZOJ 2288 贪心 +链表
- Unity中有两种Animation Clip
- web服务器 字体.svg/.woff/.woff2 404错误 解决方案
- 内网更新服务器的搭建(WSUS)
- 《互联网项目运营分析》第四章 :互联网项目的技术选择与应用
- (转载)机器学习知识点(十一)隐马尔可夫模型
- Ubuntu下eclipse部署mysql jdbc驱动
- Unicode——Windows核心编程学习手札之二
- Leetcode 209. 长度最小的子数组 解题思路及C++实现
- Glow-流生成模型(一)