如何使用 npm 安装 bcrypt?

Posted

技术标签:

【中文标题】如何使用 npm 安装 bcrypt?【英文标题】:How do I install bcrypt using npm? 【发布时间】:2021-08-24 07:08:58 【问题描述】:

我有 nodejs 版本 10.19.0、ubuntu 20.04.2,并为 javascript 使用 webstorm ide。我尝试安装 bcrypt 和 sha256,但两个库都不起作用。 例如,安装 bcrypt 后,我​​的 javascript 代码中的前 2 行是:

    const bcrypt = require('bcrypt');
    alert('hello');

只有当我注释掉第一行时才会弹出警报功能。我对 sha256 也有同样的问题。

我尝试安装、卸载和重新安装 bcrypt 和 bcryptjs(甚至是应该与我的节点版本匹配的 bcrypt 版本)。为什么我似乎无法正确安装这些库?谢谢。

PS。我试过'npm install bcrypt'

    $ npm list -g
    (node:40710) ExperimentalWarning: The fs.promises API is 
    experimental
    /home/philip/.nvm/versions/node/v10.16.3/lib
    ├── bcrypt@5.0.1
    ├── create-react-app@3.3.1
    ├── node-gyp@8.1.0
    ├── npm@7.16.0
    └── truffle@5.1.39

【问题讨论】:

` const bcrypt = require('bcrypt');警报('你好'); ` 此代码是否存在于您的 html 文件中?因为警报在 HTML 文件中用作窗口警报,而您使用 bcrypt 的方式是后端语法,如 app.js 不是直接的。 在正文的末尾。我应该尝试使用 console.log 吗? 如果你使用过npm install bcrypt,那么你需要在后端使用bcrypt,查看这个例子loginradius.com/blog/async/…或者参考他们的npm网站npmjs.com/package/bcrypt 【参考方案1】:

首先您应该正确了解如何在您的项目中安装 bcrypt,您可以查看此链接 https://www.npmjs.com/package/bcrypt 进行详细安装,您还可以从中获得进一步的帮助。但是现在的问题是您没有在 js 文件中正确导入 bcrypt。您应该像这样导入它,它会正常工作。

const bcrypt = require('bcryptjs')

【讨论】:

OP 使用npm iinstall bcrypt,如果你引用 bcrypt npm 包,这不是正确的方法。 我试过 'npm install -g browserify' 但也没有用。我在查看 chrome 的控制台日志后发现了这个错误消息: Uncaught ReferenceError: require is not defined at todo.js:1 @PhilipStephens 要求不适用于 html 文件,它适用于后端节点 js 文件。请参考我在评论中发布的示例。 @Jatin 我试过“ import bcrypt from 'bcryptj; ”和“ import bcrypt from 'bcryptjs'; ”但它们都不起作用。是否有一个简短的 sn-p 说明如何在 javascript 中使用 bcrypt,因为我想在 Web 应用程序而不是后端使用它? 我在这里测试了“bcryptjs”:runkit.com/embed/lsr3gv9wpxj8。它可以工作,除了我无法让比较和验证函数返回值。全局变量不起作用,返回值也不起作用,但是如果我 console.log 在哈希函数的中间它起作用。最初的 cmets 告诉我将结果存储在数据库中,但我没有使用数据库。【参考方案2】:

https://browserify.org/ 是我尝试过的唯一有效的解决方案。谢谢大家的帮助。

编辑:我不再需要使用 browserify 来在我的 javascript 应用程序中使用 bcrypt!

以下是我为使其正常工作所做的更改:

在 todoApp.html...

 <head>
    <link rel="stylesheet" type="text/css" href="css/todo.css">
    <meta charset="UTF-8">
    <title>Todo App</title>
    <script src="https://cdn.jsdelivr.net/npm/bcryptjs@2.4.3/dist/bcrypt.js"></script>
 </head>

...

     <script src="scripts/todo.js"></script>
 </body>

在 todo.js 中

let bcrypt = dcodeIO.bcrypt;
const saltRounds = 12;
...

【讨论】:

也可以试试这个基于 bcrypt 但非常易于使用的库:npmjs.com/package/bcrypt-inzi

以上是关于如何使用 npm 安装 bcrypt?的主要内容,如果未能解决你的问题,请参考以下文章

npm install bcrypt 失败的节点

防火墙后的 Meteor 包安装

npm install bcrypt报错

bcrypt安装常见错误解决方法

即使安装了passlib,Ansible password_hash也不会使用bcrypt

如何使用已有的 bcrypt 代码实施护照?