我可以更改 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).

就我而言,我有这些版本:

这里是 V8 开发人员。对于记录和未来的搜索者:V8,一般,不承诺 API 或版本之间的 ABI 稳定性,因此默认情况下,给定的 Node.js 版本(只是像任何其他 V8 嵌入器一样,例如基于 Chromium 的浏览器)只与一个 V8 版本兼容。

也就是说:

  • 适应新 API 版本所需的更改通常相当小且简单;但它们确实需要您更改一些 C++ 代码并重新编译 Node。 (在过去十年中有一些例外,需要大量工作。)
  • 有时我们(V8 团队)有理由破例并实际保证 ABI 在小范围版本上的稳定性。围绕 Node 10 发布的 IIRC 就是这样的时间; 6.8 and/or 6.9 可能在那个范围内,我不确定。
  • 有时您可能会很幸运:没有什么重大变化,早期或更新的版本都能正常工作:-)

就目前的情况而言,我同意@PatrickRoberts 的建议,即调试可能比二等分更有用。