You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常的NodeJS登录API部署Azure App Service后报错求助

问题描述

我在Azure App Service部署一个简易登录API,本地运行正常,但Postman测试返回“DB is not available!”;部署成功后Azure显示“:( Application Error”。

应用洞察日志如下:

2022-11-21T06:18:19.890232847Z > nodemon App.js
2022-11-21T06:18:19.890236947Z 
2022-11-21T06:18:21.148319009Z node:internal/modules/cjs/loader:942
2022-11-21T06:18:21.148355110Z   throw err;
2022-11-21T06:18:21.148360910Z   ^
2022-11-21T06:18:21.148372410Z 
2022-11-21T06:18:21.148377310Z Error: Cannot find module '../lib/cli'
2022-11-21T06:18:21.148381210Z Require stack:
2022-11-21T06:18:21.148384910Z - /home/site/wwwroot/node_modules/.bin/nodemon
2022-11-21T06:18:21.148388810Z     at Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
2022-11-21T06:18:21.148392710Z     at Module._load (node:internal/modules/cjs/loader:780:27)
2022-11-21T06:18:21.148396510Z     at Module.require (node:internal/modules/cjs/loader:1005:19)
2022-11-21T06:18:21.148400310Z     at Module.patchedRequire [as require] (/usr/local/lib/node_modules/applicationinsights/node_modules/diagnostic-channel/dist/src/patchRequire.js:14:46)
2022-11-21T06:18:21.148404310Z     at require (node:internal/modules/cjs/helpers:102:18)
2022-11-21T06:18:21.148407911Z     at Object.<anonymous> (/home/site/wwwroot/node_modules/.bin/nodemon:3:13)
2022-11-21T06:18:21.148412411Z     at Module._compile (node:internal/modules/cjs/loader:1105:14)
2022-11-21T06:18:21.148416111Z     at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
2022-11-21T06:18:21.148419811Z     at Module.load (node:internal/modules/cjs/loader:981:32)
2022-11-21T06:18:21.148423511Z     at Module._load (node:internal/modules/cjs/loader:827:12) {
2022-11-21T06:18:21.148427211Z   code: 'MODULE_NOT_FOUND',
2022-11-21T06:18:21.148430811Z   requireStack: [ '/home/site/wwwroot/node_modules/.bin/nodemon' ]
2022-11-21T06:18:21.148434611Z }

我的package.json:

{
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon App.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2",
    "mysql": "^2.18.1",
    "nodemon": "^2.0.20"
  }
}

API代码:

const express= require("express");
const app = express();
const bodyparser = require('body-parser')
const mysql = require("./DbConnect").connection;
const port = process.env.port || process.env.PORT || 3001;

app.use(bodyparser.urlencoded({extended: false}))
app.use(bodyparser.json())

app.post("/login", (req, res) => {

    let user  = req.param('user',null);
    let password = req.param('password',null);
    
    let qry = "select * from user where username ='" + user + "' AND password='" + password + "'";
    
    mysql.query(qry, (err, results) => {

        if (err)
            res.status(500).send("DB is not available!")
        else {
            if (results.length > 0) {
                res.status(200).send(results);
            }else{
                res.status(404).send("Email Or Password InCorrect")
            }
        }
    });

});

请问哪里操作出错了?


问题分析与解决

1. Azure部署失败的核心原因

日志中的Cannot find module '../lib/cli'是因为nodemon是开发环境工具,不适合用于生产部署。其bin脚本依赖的文件在Azure的生产部署环境中可能未正确安装,或者环境兼容性导致加载失败。

修改package.json的启动脚本,改用node直接启动应用:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "node App.js",
  "dev": "nodemon App.js" // 保留dev脚本用于本地开发调试
}

2. 本地Postman返回“DB is not available!”的原因

  • 检查./DbConnect.js中的数据库连接配置,确认本地数据库服务是否正常启动,连接参数(主机、端口、用户名、密码、数据库名)是否正确。
  • 验证本地数据库的权限设置,确保允许当前应用程序的访问(比如MySQL是否开放localhost连接权限)。

3. 额外安全与优化建议

  • 修复SQL注入漏洞:当前接口直接拼接用户输入到SQL语句中,存在严重安全风险,改用参数化查询:
    let qry = "select * from user where username = ? AND password = ?";
    mysql.query(qry, [user, password], (err, results) => {
      // 原有处理逻辑
    });
    
  • 密码加密存储:明文存储密码是极大的安全隐患,使用bcrypt等哈希算法对密码加密后再存入数据库。
  • 环境变量管理:数据库连接信息不要硬编码,改为通过Azure App Service的“配置”->“应用程序设置”添加环境变量,本地开发可使用.env文件配合dotenv包加载。

内容的提问来源于stack exchange,提问作者RadiumBall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:55:17