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

部署Node.js-React应用到Azure时如何解决Cannot find module '../lib/cli'错误?

解决Azure部署Node.js-React应用时的nodemon模块找不到问题

问题根源

  1. 脚本死循环:你的package.json里start脚本写的是"npm start",这会无限递归调用,导致实际执行的nodemon路径出现异常。
  2. 生产环境误用nodemon:nodemon是开发环境的热重载工具,生产环境用它不仅没必要,还可能引发依赖路径问题。
  3. 本地node_modules上传导致兼容性问题:本地环境(大概率是Windows)的node_modules和Azure的Linux服务器不兼容,直接上传会导致依赖文件损坏或路径错误。

修复步骤

1. 修正package.json的启动脚本

把scripts改成开发和生产环境分离的写法,避免死循环:

"scripts": {
  "hotloader": "webpack-dev-server --config ./webpack.config.js --mode development --port 5000",
  "start": "nodemon server/server.js", // 开发环境用nodemon
  "prod": "NODE_ENV=production node server/server.js" // 生产环境直接用node启动
}

2. 让Azure用生产环境脚本启动

选下面任意一种方式即可:

  • 直接修改start脚本(推荐):把start改成生产命令,Azure默认会执行npm start:
    "start": "NODE_ENV=production node server/server.js"
    
  • Azure门户配置启动命令:登录Azure找到你的Web App → 配置 → 常规设置 → 启动命令,输入npm run prod。

3. 优化GitHub Actions部署流程

不要上传本地的node_modules,只传必要文件,避免兼容性问题:
修改工作流里的上传artifact步骤:

- name: Upload artifact for deployment job
  uses: actions/upload-artifact@v3
  with:
    name: node-app
    path: |
      server/
      package.json
      package-lock.json
      dist/ # webpack打包后的产物目录,根据实际情况调整
      # 其他你需要的静态文件或配置

如果Azure没有自动安装依赖,就在部署步骤后加一句:

- name: Install production dependencies
  run: npm install --production

4. 清理后重新部署

删除本地的node_modules和package-lock.json,重新跑npm install,然后推代码触发GitHub Actions重新部署。

验证

部署完成后看Azure日志,应该会看到服务用node server/server.js启动,不会再出现nodemon找不到模块的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:42:02