我在终端上运行节点应用程序。最近已升级到节点v8.5.0,但我收到此错误:
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)
知道如何解决这个问题吗?
答案 0 :(得分:63)
您需要从bcrypt
文件夹中删除模块文件夹(node_modules
)并重新安装,请使用以下命令:
$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
答案 1 :(得分:34)
您必须重建软件包并告诉npm更新它的二进制文件。尝试:
npm rebuild bcrypt --update-binary
@robertklep用这个命令look回答了一个相对的问题。
只有重建天堂才能解决我的问题,这在我的应用程序中运行良好。
希望它有所帮助!
答案 2 :(得分:25)
我遇到了同样的问题,这里提到的没什么对我有用。 这是对我有用的东西:
main.js
文件中需要您需要的所有依赖项。 (这对我来说似乎是第一个重要的部分)npm i -D electron-rebuild
以添加electron-rebuild程序包node-modules
文件夹和packages-lock.json
文件。npm i
以安装所有模块。./node_modules/.bin/electron-rebuild
重建所有内容在./node_modules/.bin/electron-rebuild
之后直接运行npm i
非常重要,否则在我的Mac上不起作用。
我希望我能帮助一些沮丧的人。
答案 3 :(得分:14)
简单地运行:
npm uninstall bcrypt
其次是:
npm install bcrypt
(或npm install
,如果 bcrypt 在 package.json 文件中声明为依赖关系
答案 4 :(得分:10)
由于package-lock.json,您很可能遇到此问题。它会以某种方式阻止您重新编译或重建依赖项,即使您明确运行npm rebuild
也是如此。我运行以下所有内容为我修复它:
rm package-lock.json;
rm -rf node_modules;
npm install;
答案 5 :(得分:7)
您可以看到此link
检查节点版本权限。使用
NODE_MODULE_VERSION 51表示您的节点版本是nodejs v7.x,需要NODE_MODULE_VERSION 57意味着您需要将节点升级到v8.x,因此您需要升级节点。然后您需要运行npm rebuild
命令来重建项目
答案 6 :(得分:4)
npm rebuild bcrypt --update-binary
我有相同的问题,但是包不同,我运行此代码并对其进行处理
答案 7 :(得分:3)
确保仅安装一个版本的NodeJS。尝试以下两个:
node --version
sudo node --version
我最初是从源代码安装NodeJS的,但是它是不正确的版本,并使用nvm
“升级”到了最新版本,它不会删除任何以前的版本,而只会在{{ 1}}目录。因此/root/.nvm/versions/...
仍指向先前的版本,而sudo node
指向较新的版本。
答案 8 :(得分:3)
原来我的问题是用户错误:确保用于运行的节点版本与运行npm install或yarn时使用的节点版本相同。
我使用NVM进行版本控制节点,并且正在通过终端运行yarn,但是我的IDE设置为在运行时使用较旧版本的节点,并且抛出了以上错误。在运行配置中将我IDE的node版本与node --version匹配,可以解决此问题。
答案 9 :(得分:3)
我遇到了同样的错误,但我试图使用Docker容器运行节点应用程序。
我通过添加.dockerignore文件来修复它以忽略node_modules目录,以确保在docker镜像构建时,它构建我想要的图像的本机包(Alpine),而不是复制为我的主机编译的node_modules (Debian的)。
答案 10 :(得分:2)
我删除了node_modules文件夹并运行currentFloor
,并且我的应用程序启动时没有任何错误。
答案 11 :(得分:1)
对于Electron模块,请安装electronic-rebuild。
import tensorflow as tf
import keras
#from keras.models import load_model
from keras.models import load_model
import argparse
import pickle
import cv2
import os
from sklearn.preprocessing import LabelBinarizer
lb = LabelBinarizer()
f = open("simple_multiclass_classifcation_lb.pickle", "wb")
f.write(pickle.dumps(lb))
f.close()
test_image_path = r"E:\classification\test\test\pan26.jpg"
model_path = r"PanModel.model.h5"
label_binarizer_path = "E:\API\simple_multiclass_classifcation_lb.pickle"
image = cv2.imread(test_image_path)
output = image.copy()
image = cv2.resize(image, (32,32))
#scale the pixel values to [0, 1]
image = image.astype("float") / 255.0
image = image.flatten()
print ("image after flattening",len(image))
image = image.reshape((1, image.shape[0]))
print ("image--reshape",image.shape)
# load the model and label binarizer
print("[INFO] loading network and label binarizer...")
model = tf.keras.models.load_model('PanModel.model.h5')
#model = load_model("PanModel.model.h5")
lb = pickle.loads(open(label_binarizer_path, "rb").read())
# make a prediction on the image
print (image.shape)
preds = model.predict(image)
# find the class label index with the largest corresponding
# probability
print ("preds.argmax(axis=1)",preds.argmax(axis=1))
i = preds.argmax(axis=1)[0]
print (i)
label = lb.classes_[i]
# draw the class label + probability on the output image
text = "{}: {:.2f}%".format(label, preds[0][i] * 100)
cv2.putText(output, text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
# show the output image
cv2.imshow("Image", output)
cv2.waitKey(0)
指定在当前目录中安装的相同版本
您可能会遇到这样的经验,即标准的node-gyp构建将报告为64,然后基本的电子重建将报告为76,直到您添加具有确切版本的-v并将其更改为实际版本80(对于9.0.0) -beta.6)
答案 12 :(得分:1)
这对我有用。我在Electron Js中使用 looped-back 节点模块,并遇到了这个问题。在尝试了许多事情之后,以下对我有用。
在脚本的 package.json 文件中,添加以下行:
...
"scripts": {
"start": "electron .",
"rebuild": "electron-rebuild"
},
...
然后运行以下命令npm run rebuild
答案 13 :(得分:0)
我刚运行kadence时遇到此错误,已安装的“ kadence”脚本首先检查nodejs,并且仅在没有nodejs的情况下才运行node。我将最新版本的node链接到我的〜/ bin目录中,但是nodejs运行的是我忘记卸载的较旧版本,但直到现在才引起问题。
因此有此问题的人可能会检查node和nodejs是否实际运行相同版本的node ...
答案 14 :(得分:0)
我在一个电子应用程序中两次遇到此错误,结果发现问题是某些模块需要从主过程而不是渲染过程中使用。使用pdf2json和节点画布时发生错误。将需要这些模块的代码从index.htm(渲染过程)移动到main.js(主过程)可修复错误,并重新构建了应用程序并完美运行。这并不能在所有情况下都解决问题,但是首先要检查您是否正在编写电子应用程序并遇到此错误。
答案 15 :(得分:0)
您只需要在以下命令中运行此命令即可:
$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install
最后
$ ./node_modules/.bin/electron-rebuild
如果您的依赖项中不存在yarn add electron-rebuild
,请不要忘记。
答案 16 :(得分:0)
运行npm config set python python2.7
,然后再次运行npm install
,聚会开始。
答案 17 :(得分:0)
他们都没有为我工作,但这是
npm install
npm start
答案 18 :(得分:0)
我来到这里是因为我在 vscode 中遇到了 quokka.js ext 的错误。
我的解决方案: (在 Mac 上通过终端)
1- 我去了 ~/.quokka
2- 我跑了 nano config.json
3- 我将 config.json 中的代码复制到一个单独的文件中
4- 我删除了 config.json 中的代码
5- 我停止并重新启动 Quokka。
6- 一旦我确认 Quokka 工作没有错误,我就删除了 config.json 文件代码。
答案 19 :(得分:0)
robotjs也有类似的问题。有一些不推荐使用的代码需要节点v11,但是我已经在v12上编译了电子代码。所以我基本上得到了相同的错误。 由于我基本上试图将电子和其他依赖项从v12重建到节点v11中,因此这里没有任何效果。
这就是我所做的事情(部分原因是基于chitzui的回答,即应归功的信用):
npm init
重新初始化程序包,然后使用旧备份的package.json丢失数据npm i
希望这会有所帮助。
答案 20 :(得分:0)
就我而言,我运行的是// in kotlin
Glide.with(context)
.load("url")
//using apply to RequestOptions instead signature directly
.apply(RequestOptions().signature(ObjectKey("time that image was updated")))
.into(thumb)
而不是nodejs
。由于node
由软件包管理器安装:
nodejs
答案 21 :(得分:0)
就我而言,我在办公室代理中正在跳过某些软件包。当我走出办公室代理并尝试做Parent3
时,它起作用了。也许这对某人有帮助。
但是我花了几个小时才确定这是原因。
答案 22 :(得分:0)
我遇到了同样的问题,但是这些解决方案都没有用,我也不知道为什么,过去他们为我解决类似的问题。
无论如何要解决该问题,我只是使用node-pre-gyp手动重建软件包
cd node_modules/bcrypt
node-pre-gyp rebuild
一切都按预期进行。
希望这会有所帮助
答案 23 :(得分:0)
检查您正在使用的Node版本,可能与预期版本不匹配。
答案 24 :(得分:0)
可能是导致问题的原因是节点JS版本不一致。 As stated in the documentation。确保使用lts版本之一。例如。在您的Dockerfile中指定它:
# Pull lts from docker registry
FROM node:8.12.0
# ...
答案 25 :(得分:0)
您可以完全删除bcrypt并安装bcryptjs。它慢了30%,但没有依赖关系,因此安装起来很轻松。
<Button
title="Go to Details"
onPress={() => this.props.navigation.navigate('Second', {
name: 'John',
age: 12,
})}
// onPress={gotoSecondButton}
gotoSecondButton = () => {
this.props.navigation.navigate('Second', {
name: 'John',
age: 12,
})
}
我们已经为我们的应用程序成功安装了它。我们遇到了bcrypt无法在Node v8.x的AWS实例上编译的问题
答案 26 :(得分:0)
我遇到了与grpc模块相同的问题,在我的情况下,我使用的是电子,并且在env变量“ export npm_config_target = 1.2.3”中设置了错误的电子版本,将其设置为我正在使用的电子版本这个问题在我身上。希望这对设置环境变量(https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way)的人有所帮助
答案 27 :(得分:0)
尝试不同的事情后。 这很有用。
删除节点模块文件夹并运行
npm i
答案 28 :(得分:0)
使用systemd运行我的应用时出现此错误:
ExecStart=/usr/local/bin/node /srv/myapp/server.js
但是我在shell中使用了npm install
的不同版本:
$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node
如果这是您的设置,您可以在服务文件中对节点版本进行硬编码,也可以按照this one之类的解决方法进行操作。