【问题标题】:Unable to deploy a node.js project on Azure, Bcrypt is the culprit无法在 Azure 上部署 node.js 项目,Bcrypt 是罪魁祸首
【发布时间】:2016-05-02 04:35:43
【问题描述】:

我目前正在开发一个部署在 Azure 上的 node.js 项目。我刚刚使用 bcrypt 添加了密码加密。在我的测试计算机上一切都很好,但是当我在 Azure 上部署时,部署失败并且我收到了这条消息:

node-gyp rebuild
C:\DWASFiles\Sites\invata\VirtualDirectory0\site\wwwroot\node_modules\bcrypt>node  "D:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-   gyp\bin\node-gyp.js" rebuild 
gypnpm ERR! bcrypt@0.7.6 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
An error has occurred during web site deployment.
npm ERR! 
npm ERR! Failed at the bcrypt@0.7.6 install script.

BCrypt 安装有点棘手,因为它需要下载和安装 openSSL。那么有没有可能在 azure 上部署这样的模块,还是没有希望?

谢谢, 斯蒂芬

【问题讨论】:

    标签: node.js azure bcrypt


    【解决方案1】:

    经过一番调查,我发现了另一个 bcrypt 模块,这是一个原生 JS 模块,它在 Azure 上完美运行:https://github.com/shaneGirish/bcrypt-nodejs

    【讨论】:

    • +1 因为我遇到了确切的问题。您应该将此标记为答案!
    • bcrypt 在 Azure 上也为我抛出了一个错误。用 crypt-nodejs 交换它就可以了。谢谢。
    • 很好 - 对我来说直接交换
    • 这是一个解决方案,但由于 bcrypt 专门设计为慢速,这可能是大容量服务器中的问题。本机 bcrypt 模块的优点是 bcrypt 计算本身是异步运行的。尽管 bcrypt-nodejs 通过提供 comparecompareSync 暗示它支持异步,但两者实际上都是同步操作,只是“异步”操作发生在下一个滴答声中。它仍然会暂停所有操作,直到 bcrypt 计算完成并且不是真正的异步。
    • 有没有人想出更好的解决方案来解决这个问题?我按照建议切换到 bcrypt 的本机 JS 实现,但它比本机版本慢 3 倍。我可以看到这会在大容量环境中叠加并导致问题。
    【解决方案2】:

    我自己也遇到了这个问题。

    在过去一小时寻找解决方案后,以下内容对我来说完美无缺:

    1. 转到您的网络应用控制台(在网络应用工具中找到)
    2. 类型:npm install bcrypt

    我在执行命令后没有收到任何输出,但进入 Web App node_modules 文件夹我发现 bcrypt 及其所有依赖项。

    从那时起,持续部署工作完美无缺,希望这对其他人有所帮助!

    【讨论】:

    • 有时候在做npm install npm 构建一些库失败时,你可以尝试npm rebuild 让npm 重新构建所有需要构建的库。
    • 在 Azure Web App 上运行 npm install 命令不是一个好习惯,部署应该是全自动的,安装 bcrypt-nodejs 似乎是最好的解决方案。
    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多