我正在编写一个 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/