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

Node.js可观测性模块Heroku构建失败但开发环境正常

解决Heroku部署Node.js项目时Webpack找不到Axios模块的问题

以下是针对Heroku生产环境Webpack编译缺失Axios相关模块的排查和解决步骤:

  • 确认Axios的依赖位置
    检查package.json,确保axios被放在dependencies而非devDependencies中。Heroku生产环境默认不会安装devDependencies,如果Axios仅存在于开发依赖里,部署后会直接缺失。可以通过npm list axios查看本地依赖归属,调整后重新提交代码。

  • 适配Webpack的Node.js环境配置
    Honeycomb和New Relic的SDK依赖Node.js环境下的Axios特性,Webpack打包时可能未正确处理Node原生模块。在webpack.config.js中添加如下配置:

    module.exports = {
      // 其他已有配置
      node: {
        __dirname: false,
        __filename: false,
      },
      resolve: {
        extensions: ['.js', '.json'],
        fallback: {
          "http": require.resolve("stream-http"),
          "https": require.resolve("https-browserify"),
          "url": require.resolve("url/"),
          "util": require.resolve("util/")
        }
      }
    };
    

    同时安装对应的fallback依赖:

    npm install stream-http https-browserify url util --save
    
  • 清除Heroku依赖缓存
    Heroku会缓存已安装的依赖,可能导致新增或调整的依赖未被正确安装。执行以下命令清除缓存并重新部署:

    heroku plugins:install heroku-repo
    heroku repo:purge_cache -a your-app-name
    git commit --allow-empty -m "Purge dependency cache"
    git push heroku main
    
  • 检查Webpack externals配置
    若之前在webpack.config.js中配置了externals排除Node模块,确认未将axios列入排除列表。比如移除类似externals: { axios: 'commonjs axios' }的配置,避免Webpack跳过Axios的打包处理。

  • 对齐Node.js版本
    在package.json中指定engines字段,确保Heroku使用与本地一致的Node.js和npm版本,避免版本差异导致的依赖兼容性问题:

    "engines": {
      "node": "18.x",
      "npm": "9.x"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:48:10