Ava kullanılırken yanlış NODE_MODULE_VERSION
Nodegit kullanan bir Electron uygulaması yazıyorum . Test bölümümde , uygulamamı test etmek için ava'yı Spectron ile birlikte kullanıyorum . Uygulamamda nodegit kullanan işlevler dahil tüm testlerim çalışıyor .
Yukarıda açıklanan testlere ek olarak, doğrudan nodegit'i içe aktardığım saf Elektron olmayan bir test dosyası da yaptım.
import * as nodegit from 'nodegit';
Bu testi şimdi ava aracılığıyla yürütmek şunu döndürür:
node_modules\.pnpm\[email protected]\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)
Sürüm 82 tam olarak nereden geliyor? Yalnızca sürümü beklendiği gibi kullanan nodej'lerim var . Neden gelmez düğüm versiyonu benim app gerçekten çalışıyor bir uyumsuzluk olduğunu düşünüyorum? Şöyle görünüyor:14.15.083package.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"
]
},
Kendimi inşa ettim nodegitve config.gypidosyada bile şunu ifade ediyor:
"node_module_version": 83,
Süper basit tekrarlanabilir bir örnek yaptım: https://github.com/Githubber2021/node_module_version-issue
% node --version
14.15.0
% npm install
% npm run ava
... error
Bunun bir hata olup olmadığını veya sürüm 82'nin nereden geldiğini kimse bana açıklayabilir mi?
Yanıtlar
Bu iki şeyden biri olabilir:
- Yüklediğiniz yerel bağımlılık, önceden oluşturulmuş ikili dosyalar sağlar - Bu muhtemelen böyledir
- Yüklediğiniz yerel bağımlılık, kaynak kodu olarak indirilir ve ikili dosyayı oluşturmak size bağlıdır.
Nodegit'in README'sine göre,
"NodeGit, herhangi bir yerel bağımlılık olmadan kullanıma hazır çoğu sistemde çalışacaktır."
Ancak en azından [email protected]Düğüm 14'ü kullanarak önceden oluşturulmuş ikili dosyalar almanız gerektiği görülüyor. Kaynak
Yani 82gördüğünüz, önceden oluşturulmuş ikilinin karşı derlendiği ABI sürümünden geliyor. Zaten kullandığınız için [email protected], bir şekilde yanlış ABI için önceden oluşturulmuş ikili dosyalar elde ettiniz.
İşte farklı sürümler için çeşitli ikili dosyaları listeleyen kullandığım bir depo, böylece bunun nasıl olabileceğini görebilirsiniz: https://github.com/lovell/sharp/tree/v0.25.3
Electron'da geliştiriyorum ve Electron için bunun gibi bir komut kullanarak Electron'un doğru sürümünü çalıştırıyorum npm rebuild.
npm rebuild --runtime=electron --target=8.5.3 --disturl=https://atom.io/download/atom-shell
Düz düğüm için eşdeğerinin tam olarak ne olduğunu bilmiyorum , ancak bu sizi yaklaştırırsa bana bildirin ve eğer öyleyse ne bulabileceğime bakayım.
Hey) Sanırım problemini çözebilirim, sadece şunu dene:
"engines": {
"node": ">=14.0.0"
},
package.json dosyanıza ekleyin ve node_modules'i kaldırın ve proje dizininizde npm i yapın. Yardımcı olmalı