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

Express+EJS项目加载models子目录JS文件失败报Unexpected identifier错误

问题原因
  • 你的Express服务仅配置了assets目录为静态资源目录:代码中app.use(express.static(path.join(__dirname, 'assets'))) 这行配置,只会把assets下的文件对外暴露可直接访问。
  • 你请求/models/utils.js时,Express没有匹配到对应的静态资源路由,默认返回的是HTML格式的错误页面。浏览器把HTML内容当成JS代码解析,就会抛出Uncaught SyntaxError: Unexpected identifier 语法错误。
  • 额外注意:如果你的utils.js是服务端专用的文件(包含require、module.exports、Mongoose操作等Node.js专属语法),就算配置了静态路由让它加载成功,浏览器也不支持这类Node语法,依然会报错。
解决方案

方案1(最推荐)

如果utils.js是纯前端使用的工具函数,直接将它移动到assets/js目录下即可,这符合前端静态资源统一存放的开发规范,你之前的测试也验证了这个方案有效。

方案2(需要保留目录结构时用)

如果你一定要把utils.js放在models目录下,在main.js的静态资源配置部分新增一行,把models目录也配置为静态资源目录:

app.use('/models', express.static(path.join(__dirname, 'models')))

配置后重启服务即可正常加载/models/utils.js,如果文件里有Node专属语法,需要先把这部分代码删掉或者改成浏览器兼容的ES模块化语法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:01