我可以更改 node.js 使用的 v8 版本吗?
Can I change v8 version used by node.js?
我正在编写一个 node.js C++ 插件,它在两个相同的 node.js 版本和不同的 v8 版本中表现不同。所以我也想让 v8 版本相同,看看不同的 v8 版本是否会导致不同的行为。
要重现这一点,您可以打开 VSCode 的 "about" 并查看 node.js 和 V8 版本。 VSCode 的 V8 的 v8 版本与相同版本的常规 node.js 中使用的不同(并以 -electron
结尾)(node -p process.versions.v8
,以 -node
).
就我而言,我有这些版本:
- VSCode: Node.js 10.11.0, V8 6.9.427.31-electron.0
- 常规 Node.js:10.11.0,V8 6.8.275.32-node.28
这里是 V8 开发人员。对于记录和未来的搜索者:V8,一般,不承诺 API 或版本之间的 ABI 稳定性,因此默认情况下,给定的 Node.js 版本(只是像任何其他 V8 嵌入器一样,例如基于 Chromium 的浏览器)只与一个 V8 版本兼容。
也就是说:
- 适应新 API 版本所需的更改通常相当小且简单;但它们确实需要您更改一些 C++ 代码并重新编译 Node。 (在过去十年中有一些例外,需要大量工作。)
- 有时我们(V8 团队)有理由破例并实际保证 ABI 在小范围版本上的稳定性。围绕 Node 10 发布的 IIRC 就是这样的时间; 6.8 and/or 6.9 可能在那个范围内,我不确定。
- 有时您可能会很幸运:没有什么重大变化,早期或更新的版本都能正常工作:-)
就目前的情况而言,我同意@PatrickRoberts 的建议,即调试可能比二等分更有用。
我正在编写一个 node.js C++ 插件,它在两个相同的 node.js 版本和不同的 v8 版本中表现不同。所以我也想让 v8 版本相同,看看不同的 v8 版本是否会导致不同的行为。
要重现这一点,您可以打开 VSCode 的 "about" 并查看 node.js 和 V8 版本。 VSCode 的 V8 的 v8 版本与相同版本的常规 node.js 中使用的不同(并以 -electron
结尾)(node -p process.versions.v8
,以 -node
).
就我而言,我有这些版本:
- VSCode: Node.js 10.11.0, V8 6.9.427.31-electron.0
- 常规 Node.js:10.11.0,V8 6.8.275.32-node.28
这里是 V8 开发人员。对于记录和未来的搜索者:V8,一般,不承诺 API 或版本之间的 ABI 稳定性,因此默认情况下,给定的 Node.js 版本(只是像任何其他 V8 嵌入器一样,例如基于 Chromium 的浏览器)只与一个 V8 版本兼容。
也就是说:
- 适应新 API 版本所需的更改通常相当小且简单;但它们确实需要您更改一些 C++ 代码并重新编译 Node。 (在过去十年中有一些例外,需要大量工作。)
- 有时我们(V8 团队)有理由破例并实际保证 ABI 在小范围版本上的稳定性。围绕 Node 10 发布的 IIRC 就是这样的时间; 6.8 and/or 6.9 可能在那个范围内,我不确定。
- 有时您可能会很幸运:没有什么重大变化,早期或更新的版本都能正常工作:-)
就目前的情况而言,我同意@PatrickRoberts 的建议,即调试可能比二等分更有用。