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

跳转至localhost:3000/weather/new时JS脚本加载失败求助

问题分析与解决方案

从你的错误信息和页面代码来看,问题根源在于脚本路径错误和模板语法未被正确解析两个关键点:

1. 相对路径引发的jQuery加载失败

你引用jQuery的方式是相对路径:

<script src="js/jquery-2.1.4.min.js"></script>
  • 当访问localhost:3000时,相对路径会被解析为http://localhost:3000/js/jquery-2.1.4.min.js,这是正确的路径;
  • 但跳转到localhost:3000/weather/new时,相对路径会变成http://localhost:3000/weather/js/jquery-2.1.4.min.js——这个路径不存在,服务器返回了HTML格式的404页面,浏览器因此提示MIME类型错误(text/html不是合法的JavaScript MIME类型),脚本加载失败。

解决方法:
把脚本路径改成绝对路径(和你引用CSS文件的方式保持一致):

<script src="/js/jquery-2.1.4.min.js"></script>

以/开头的路径会始终从网站根目录查找资源,不受当前子路由的影响。

2. 未解析的模板语法导致Skycons加载失败

从错误信息里的http://localhost:3000/weather/%7B%7Basset('/js/skycons.js')%7D%7D可以看出,你的Skycons脚本引用里的{{asset('/js/skycons.js')}}模板语法没有被服务器解析,直接被当成字符串输出(%7B%7B是{{的URL编码结果),导致请求了一个不存在的资源,同样返回HTML,最终引发ReferenceError: Skycons is not defined。

解决方法:

  • 先检查模板引擎配置:确认服务器正确配置了对应模板的解析器(比如EJS、Handlebars等),模板文件的扩展名符合要求(比如.ejs、.hbs),确保{{asset('/js/skycons.js')}}能被转换成正确的资源路径;
  • 如果暂时无法排查模板引擎问题,可以直接替换为绝对路径测试:
<script src="/js/skycons.js"></script>

验证步骤

修改完成后刷新页面,打开浏览器开发者工具的「网络」标签:

  • 确认jquery-2.1.4.min.js和skycons.js都返回200状态码,MIME类型为application/javascript;
  • 检查控制台是否还有ReferenceError报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:56:10