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

Node.js应用部署Heroku报错Cannot find module './Utilities'

故障根因

Error: Cannot find module './Utilities'报错和手写的index.js业务代码、Heroku平台配置无关,是第三方依赖兼容问题叠加运行环境差异导致的:

  • 本地开发环境为Windows或macOS,这两个系统的文件系统默认大小写不敏感,依赖里就算引用路径和实际文件名大小写不匹配,也能正常加载模块,所以本地运行完全正常
  • Heroku运行环境为Linux,文件系统大小写严格敏感,只要引用路径的文件名大小写写错、或者依赖包发布时漏打了对应文件,就会直接抛出模块找不到的错误
  • 你安装的@dovakiin0/anime-data@1.6.3版本本身存在发布缺陷:包内代码写的是引用./Utilities,但实际发布到npm的包中,对应文件要么是全小写命名的utilities.js,要么根本没被打包进发布版本,本地靠大小写不敏感的机制能正常运行,到Linux环境就直接触发报错。
修复步骤

按优先级执行以下方案即可:

  1. 替换存在问题的依赖版本
    先在本地项目目录执行命令卸载现有问题版本:
    npm uninstall @dovakiin0/anime-data
    
    安装修复了该路径问题的版本,优先选择最新稳定版:
    npm install @dovakiin0/anime-data@latest
    
    安装完成后本地启动项目验证接口功能正常,再把更新后的package.json和package-lock.json提交到Git重新部署即可。
  2. 如果最新版本仍存在该问题,用补丁方式修复
    打开本地项目的node_modules/@dovakiin0/anime-data目录,全局搜索代码里所有require('./Utilities')的引用,把路径改成和目录下实际文件名完全一致的大小写(比如实际文件为小写就改成require('./utilities')),之后用patch-package生成依赖补丁提交到仓库,Heroku部署时安装完依赖会自动应用补丁,不会再出现路径错误。
  3. 规避额外配置问题
    当前的.gitignore配置是正确的,不要把本地的node_modules目录提交到Git,Heroku会自动根据依赖清单安装适配Linux环境的依赖包,上传本地node_modules反而会因为系统二进制不兼容触发更多运行错误。现有的Procfile、package.json里的Node版本配置、启动脚本都没有问题,不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:27:25