Uruchamiam aplikację węzła na terminalu. Niedawno zaktualizowałem węzeł do wersji 8.5.0, ale otrzymuję ten błąd:
Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (module.js:653:18)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (module.js:624:30)
at Module._extensions..js (module.js:635:10)
at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)
Masz jakiś pomysł, jak to rozwiązać?
node.js
npm
version
node-modules
JoeTidee
źródło
źródło
Odpowiedzi:
Musisz usunąć folder modułu (
bcrypt
) znode_modules
folderu i ponownie go zainstalować, użyj następujących poleceń:źródło
zmq
pakietem, a odbudowa lub usunięcie go inpm installing
od nowa nie pomaga. Zawsze ten sam problem.rm -rf node_modules
. Wyczyść pamięć podręczną npm:npm cache clear
usuń package-lock.json lub npm-shrinkwrap.json. I dopiero po tym biegunpm i
.npm cache clear
, inne polecenia toMiałem ten sam problem i nic, o czym tu wspomniano, nie zadziałało. Oto, co zadziałało dla mnie:
main.js
pliku uruchamianym przez electron. (to wydawało się być pierwszą ważną częścią dla mnie)npm i -D electron-rebuild
aby dodać pakiet odbudowy elektronównode-modules
folder orazpackages-lock.json
plik.npm i
aby zainstalować wszystkie moduły../node_modules/.bin/electron-rebuild
(.\node_modules\.bin\electron-rebuild.cmd
w systemie Windows), aby wszystko odbudowaćJest bardzo ważne , aby uruchomić
./node_modules/.bin/electron-rebuild
bezpośrednio ponpm i
inaczej to nie działa na moim mac.Mam nadzieję, że mógłbym pomóc niektórym sfrustrowanym duszom.
źródło
Musisz odbudować pakiet i powiedzieć npm, aby zaktualizował również plik binarny . Próbować:
@robertklep odpowiedział na względne pytanie za pomocą tego polecenia, spójrz .
Tylko przebudowa nie rozwiązała mojego problemu, to działa dobrze w mojej aplikacji.
Mam nadzieję, że to pomoże!
źródło
Po prostu uruchom:
npm uninstall bcrypt
Śledzony przez:
npm install bcrypt
(lubnpm install
, jeśli bcrypt jest zadeklarowany jako zależność w pliku package.json )źródło
możesz zobaczyć ten link
aby sprawdzić poprawną wersję swojego węzła. używanie NODE_MODULE_VERSION 51 oznacza, że wersja twojego węzła to nodejs v7.x, wymaga NODE_MODULE_VERSION 57 oznacza, że musisz zaktualizować swój węzeł do v8.x, więc musisz zaktualizować swój węzeł. a następnie musisz uruchomić
npm rebuild
polecenie, aby odbudować projektźródło
11/stable
na8/stable
z$ snap refresh node --channel=8/stable
. Po tym zrobił$ npm rebuild
.NODE_MODULE_VERSION 51
oznacza, że.node
plik jest kompilowany dla jakiejś wersji węzła przy użyciu NODE_MODULE_VERSION 51. A użytkownik używa wersji węzła używającej 57, więc nie może jej używać bezpośrednio. Użytkownik powinien odbudować kompilację.Najprawdopodobniej masz ten problem z powodu pliku package-lock.json. W jakiś sposób wydaje się, że blokuje ci to rekompilację lub odbudowę twoich zależności, nawet jeśli jawnie uruchomisz
npm rebuild
. Wykonałem wszystkie następujące czynności, aby to naprawić:źródło
Upewnij się, że masz zainstalowaną tylko jedną wersję NodeJS. Wypróbuj te dwa:
Początkowo zainstalowałem NodeJS ze źródła, ale była to niepoprawna wersja i 'zaktualizowana' do najnowszej wersji przy użyciu
nvm
, która nie usuwa żadnych poprzednich wersji i instaluje tylko żądaną wersję w/root/.nvm/versions/...
katalogu. Więcsudo node
nadal wskazywał na poprzednią wersję, podczas gdynode
wskazywał na nowszą wersję.źródło
Wystąpił ten sam błąd, ale próbowałem uruchomić aplikację węzła przy użyciu kontenera Docker.
Naprawiłem to, dodając plik .dockerignore, aby zignorować katalog node_modules, aby upewnić się, że podczas kompilacji obrazu docker buduje natywne pakiety dla obrazu, który chciałem (Alpine), zamiast kopiować przez node_modules skompilowane dla mojego hosta (Debian) .
źródło
node_modules/
ipackage-lock.json
Okazuje się, że moim problemem był błąd użytkownika: upewnij się, że wersja węzła, którego używasz do uruchomienia, jest taka sama, jak podczas uruchamiania instalacji npm lub przędzy.
Używam NVM do wersjonowania węzła i uruchamiałem przędzę za pośrednictwem terminala, ale moje IDE było ustawione na używanie starszej wersji węzła podczas pracy i wyświetlało powyższy błąd. Dopasowanie wersji węzła mojego IDE w konfiguracji uruchamiania do węzła - wersja rozwiązała problem.
źródło
Miałem podobny problem z robotjs. Było trochę przestarzałego kodu, który wymagał node v11, ale skompilowałem już kod electron w wersji v12. Więc otrzymałem w zasadzie ten sam błąd. Nic tutaj nie działało, ponieważ zasadniczo próbowałem przebudować elektron i inne moje zależności na węzeł v11 z v12.
Oto, co zrobiłem (część tego opiera się na odpowiedzi Chitzui, kredyt jest należny):
npm init
pakiet reinit, a następnie brakuje danych w starej kopii zapasowej package.jsonnpm i
Mam nadzieję że to pomoże.
źródło
W przypadku modułów Electron zainstaluj przebudowę elektronów.
Określ tę samą wersję, którą zainstalowałeś w bieżącym katalogu
Możesz mieć takie doświadczenie, w którym standardowa kompilacja węzła-gyp zgłosiłaby jako 64, a podstawowa przebudowa elektronu zgłosiłaby 76, dopiero gdy dodasz -v z dokładną wersją, wskoczy na rzeczywistą wersję 80 (dla 9.0.0-beta. 6)
źródło
Usunąłem folder node_modules i uruchomiłem,
npm install
a moja aplikacja uruchomiła się bez żadnych błędów.źródło
Wystąpił ten błąd podczas uruchamiania aplikacji z systememd:
Ale używałem innej wersji
npm install
w powłoce:Jeśli taka jest Twoja konfiguracja, możesz albo na stałe zakodować wersję węzła w pliku usługi, albo zastosować obejście podobne do tego .
źródło
Po wypróbowaniu różnych rzeczy. To zadziałało.
Usuń folder modułów węzłów i uruchom
źródło
Napotkałem ten sam problem z modułem grpc, aw moim przypadku używałem electron i ustawiłem niewłaściwą wersję elektronu w zmiennej env "export npm_config_target = 1.2.3", ustawiając ją na wersję elektronową, której używam, rozwiązałem problem mój koniec. Mam nadzieję, że pomoże to komuś, kto ustawił zmienne env, jak podano tutaj ( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )
źródło
Możesz całkowicie usunąć bcrypt i zainstalować bcryptjs. Jest ~ 30% wolniejszy, ale nie ma żadnych zależności, więc nie ma problemu z instalacją.
Zainstalowaliśmy go pomyślnie dla naszych aplikacji. Mieliśmy problemy z niekompilacją bcrypt na wystąpieniach AWS dla Node v8.x
źródło
Potencjalnie przyczyną problemu jest niespójność wersji JS węzła. Jak podano w dokumentacji . Pamiętaj, aby użyć jednej z wersji lts. Np. Określ to w swoim pliku Dockerfile:
źródło
Sprawdź wersję węzła, której używasz, może być niezgodność między oczekiwaniami.
źródło
Miałem ten sam problem i żadne z tych rozwiązań nie działało i nie wiem dlaczego, pracowały dla mnie w przeszłości przy podobnych problemach.
W każdym razie, aby rozwiązać problem, po prostu ręcznie przebudowałem pakiet przy użyciu node-pre-gyp
I wszystko działało zgodnie z oczekiwaniami.
Mam nadzieję że to pomoże
źródło
Właśnie dostałem ten błąd podczas uruchamiania kadence, zainstalowany skrypt "kadence" sprawdza najpierw nodejs i uruchamia węzeł tylko wtedy, gdy nie ma nodejs. Mam najnowszą wersję węzła połączoną z moim katalogiem ~ / bin, ale nodejs uruchamia starszą wersję, o której zapomniałem odinstalować, ale do tej pory nigdy nie powodowała problemów.
Więc ludzie z tym problemem mogą sprawdzić, czy node i nodejs faktycznie używają tej samej wersji node ...
źródło
W moim przypadku byłem w biurze proxy, które pomijało niektóre pakiety. Kiedy wyszedłem z biura, pełnomocnik i próbowałem to zrobić
npm install
, zadziałało. Może to komuś pomoże.Ale zajęło mi kilka godzin, zanim zidentyfikowałem to, co było przyczyną.
źródło
W moim przypadku
nodejs
zamiast biegałemnode
. Ze względu nanodejs
instalację przez menedżera pakietów:źródło
biegnij
npm config set python python2.7
i biegnijnpm install
ponownie, impreza jest włączona.źródło
wystarczy uruchomić poniższe polecenia:
i w końcu
nie zapomnij,
yarn add electron-rebuild
jeśli nie istnieje w twoich zależnościach.źródło
Dwukrotnie napotkałem ten błąd w aplikacji Electron i okazało się, że problem polega na tym, że niektóre moduły muszą być używane z głównego procesu, a nie z procesu renderowania. Wystąpił błąd przy użyciu pdf2json, a także node-canvas. Przeniesienie kodu, który wymagał tych modułów z index.htm (proces renderowania) do main.js (proces główny), naprawiło błąd, a aplikacja została przebudowana i działała idealnie. To nie rozwiąże problemu we wszystkich przypadkach, ale najpierw należy sprawdzić, czy piszesz aplikację electron i nie napotkasz tego błędu.
źródło
Oto, co zadziałało dla mnie. Używam modułu węzła z pętlą zwrotną z Electron Js i napotkałem ten problem. Po wypróbowaniu wielu rzeczy, później zadziałało.
W pliku package.json w skryptach dodaj następujące wiersze:
A następnie uruchom następujące polecenie
npm run rebuild
źródło