c++ - 我可以更改 Node.js 使用的 v8 版本吗?

标签 c++ node.js v8

我正在编写一个 Node.js C++ 插件,它在两个相同的 Node.js 版本但具有不同的 v8 版本中表现不同。因此,我想让 v8 版本也相同,看看不同的 v8 版本是否会导致不同的行为。

要重现此问题,您可以打开 VSCode 的“about”并查看其中的 node.js 和 V8 版本。 VSCode 的 V8 的 v8 版本与相同版本的常规 Node.js 中使用的不同(以 - Electron 结尾)(node -p process.versions.v8 code>,以 -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 开发人员在这里。为了记录和 future 的搜索者:V8,一般,不 promise 版本之间的 API 或 ABI 稳定性,因此默认情况下,给定的 Node.js 版本(就像任何其他 V8 嵌入器一样,例如 Chromium-基于浏览器)仅与一个 V8 版本兼容。

也就是说:

  • 适应新 API 版本所需的更改通常相当小且简单;但它们确实要求您更改一些 C++ 代码并重新编译 Node.js。 (过去十年出现了一些异常(exception)情况,需要进行大量工作。)
  • 有时我们(V8 团队)有理由破例并实际上保证小范围版本上的 ABI 稳定性。 Node 10 发布前后的 IIRC 就是这样一个时间; 6.8 和/或 6.9 很可能在这个范围内,我不确定。
  • 有时您可能会很幸运:没有任何重大变化,早期或更高版本都可以正常工作:-)

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

关于c++ - 我可以更改 Node.js 使用的 v8 版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964859/

相关文章:

c++ - 是否有内置深层复制功能的作用域指针?

node.js - cross-env 命令在 nodejs 中如何工作?

javascript - 如何在 node.js 中执行此 curl 操作

javascript - Node JS/V8 解构错误?

c++ - 使用 Runge-Kutta(二阶)积分波动方程

c++ - 如何应对高频数据?

c++ - C++中 float 的限制

javascript - 如果对象不存在,则重定向到 Meteor 中的不同路径

c++ - 在 Release模式下链接到 V8 不起作用

javascript - 如何在标识符中使用 % 符号