由于“加密”中间件,Azure Web App无法运行(NodeJS)

时间:2019-04-17 04:56:33

标签: node.js azure express

  

我正在使用Azure设置新的Web应用程序。一切都找到了,直到我从Github上传代码,然后网站显示此错误:https://linuxserver.azurewebsites.net/

     

这是日志:   2019-04-17T05:40:54.659490887Z错误:找不到模块'bcrypt'

     

这是我在Github https://github.com/phongluudn1997/express-testing上的代码

这是用于Azure上的新Linux服务器,并使用MLAB,Nodejs,Express运行NoSQL

1 个答案:

答案 0 :(得分:0)

我试图克隆您的GitHub存储库以在本地运行它,然后发现有两个问题。

  1. const define = require('../../lib/define');中的代码routes\productAPI.js无法工作,因为没有模块../../lib/define,下面的错误信息。

    internal/modules/cjs/loader.js:582
        throw err;
        ^
    
    Error: Cannot find module '../../lib/define'
    
  2. 考虑到资源安全性,请不要提交任何包含真实资源连接字符串的代码到公共仓库。


更新:

有两个用于散列密码的软件包bcryptbcrypt.js,已添加到您的package.json文件中。它们在API中兼容,但是bcrypt要求node-gypGlibC一起在Linux上安装时进行编译,bcrypt.js是一种纯Javascript实现,比{{1} }。

根据上述内容和您仓库中的bcrypt目录,我认为您关于node_modules的问题是由以下这些原因引起的。

  1. 当您仅在项目中编写var bcrypt = require('bcryptjs');代码而不使用Cannot find module 'bcrypt'时,bcryptjs中没有node_modules软件包。
  2. bcrypt软件包的安装仅需要使用带有GlibC的C / C ++编译器,但可能不在您的Azure Linux中,这样会中断npm的安装进度。

我建议您可以尝试删除依赖性bcrypt来解决此问题,因为似乎您没有在项目中使用它。

任何担心,请随时让我知道。