我编写了一个使用nodegit的 Electron 应用程序。对于我的测试部分,我将ava与 Spectron 结合使用来测试我的应用程序。我的所有测试都有效 - 包括在我的应用程序中使用nodegit的函数。
除了上面描述的测试之外,我还制作了一个纯非电子测试文件,我在其中直接导入了 nodegit。
import * as nodegit from 'nodegit';
现在通过ava执行这个测试会返回:
node_modules\.pnpm\nodegit@0.27.0\node_modules\nodegit\build\Release\nodegit.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 82. This version of Node.js requires
NODE_MODULE_VERSION 83. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Module._extensions..node (internal/modules/cjs/loader.js:1122:18)
版本 82 究竟来自哪里?我只安装了nodejs 14.15.0
,它使用83
了预期的版本。为什么节点认为该版本在我的应用程序中实际运行时不匹配?这就是我的package.json
样子:
"devDependencies": {
"ava": "^3.13.0",
},
"scripts": {
"ava": "node_modules/.bin/ava",
...
},
"ava": {
"files": [
"*.ts"
],
"extensions": [
"ts"
],
"require": [
"ts-node/register"
],
"nodeArguments": [
"--napi-modules",
"--experimental-modules"
]
},
我建立nodegit
了自己,在config.gypi
文件中它甚至提到了:
"node_module_version": 83,
我做了一个超级简单的可重现示例:https ://github.com/Githubber2021/node_module_version-issue
% node --version
14.15.0
% npm install
% npm run ava
... error
如果这是一个错误或版本 82 来自哪里,谁能解释我?