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

Express Generator项目中路由文件require公共JS文件失败求助

解决Express项目中require路径找不到的问题

嘿,我之前也踩过类似的坑!咱一步步来排查,先理清楚Express Generator默认的项目结构,再揪出路径问题:

先确认你的项目结构

Express Generator生成的项目默认是这个样子的:

你的项目根目录/
├── app.js
├── bin/
│   └── www
├── public/
│   ├── javascripts/
│   │   └── 你的目标文件.js  // 你导出对象的那个JS
│   ├── stylesheets/
│   └── images/
├── routes/
│   ├── index.js  // 你要写require的路由文件
│   └── users.js
└── views/

先核对一下你的文件是不是在对应的位置,别不小心放错文件夹了!

用正确的路径引用模块

在routes/index.js里,要引用public/javascripts下的文件,得从当前文件的位置往上退一级到项目根目录,再往下找public文件夹。

方式一:直接用相对路径

// 注意前面的../,表示跳出routes目录回到项目根
const yourModule = require('../public/javascripts/你的目标文件');

Node.js会自动识别.js后缀,所以可以省略不写。

方式二:用__dirname拼接(更稳妥,避免路径坑)

有时候相对路径容易搞混,用__dirname(当前文件所在的绝对目录)来拼接路径就不会出错:

const path = require('path');
// __dirname是routes目录的绝对路径,../跳到根目录,再拼接public的路径
const yourModule = require(path.join(__dirname, '../public/javascripts/你的目标文件'));

检查你的模块导出是否正确

别光盯着路径,说不定是导出写法错了!确保你的JS文件用的是CommonJS的导出方式(Express默认是CommonJS环境):

// 正确的导出示例
module.exports = {
  getApiData: () => {
    return '给前端返回的API数据';
  },
  appConfig: {
    version: '1.0.0'
  }
};

如果你用了ES6的export default,要么把文件后缀改成.mjs,要么在项目根的package.json里加"type": "module",但这样可能会影响Express的默认配置,所以还是用module.exports更省心。

排查常见的路径错误

  • 别用require('/public/javascripts/xxx'):这种是系统根目录的绝对路径,不是你的项目根目录,肯定找不到!
  • 注意大小写:Linux/macOS下文件名区分大小写,比如你文件叫MyModule.js,但你写my-module.js就会报错,Windows下不区分,但最好保持一致。
  • 别漏了../:如果直接写require('public/javascripts/xxx'),Node.js会去node_modules里找这个模块,当然找不到!

测试是否加载成功

在routes/index.js里加一行控制台输出:

console.log('加载的模块内容:', yourModule);

启动项目,看控制台有没有输出你导出的对象。如果输出了,说明加载成功;如果还是报错:

  • 要是Error: Cannot find module:那肯定是路径错了,再核对一遍项目结构和路径写法;
  • 要是TypeError: yourModule is not an object:那就是导出的问题,回去检查module.exports的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:46:05