【问题标题】:Node.js - Express - Static js file not loading in htmlNode.js - Express - 静态 js 文件未在 html 中加载
【发布时间】:2018-11-08 23:47:54
【问题描述】:

我知道这是一个成熟的问题,但我已经尝试了所有类型的教程并遵循堆栈和其他地方的所有建议,我的问题没有解决。

我正在尝试使用 node.js 和 express 构建一个简单的静态网站,以利用添加的服务器端功能,如 fs、数据库集成等,但使用旧式 css、html 和 js。

我知道 node.js 喜欢使用模板引擎(jade,ejs),但这不是我的情况,我需要一个简单的 index.html 文件,底部有一个脚本标签,用于存储在静态文件夹中的 javascript 逻辑/public(分离关注点)。 目前 init.js 只包含一个用于测试的 console.log。

 <script type="text/javascript" scr="/public/init.js" charset="utf-8"></script>

我遵循了有关 express 使用静态文件的指南,并尝试了以下方法的所有可能组合(为清楚起见,该方法位于名为 server.js 的文件中,该文件是我项目的 node.js 主文件):

app.use("/public", express.static(__dirname + '/public'));

这解决了加载 css 文件的问题,因为现在我的页面可以正确加载 css,如下:

<link rel="stylesheet" href="/public/style.css">

我也试过很多脚本标签的组合,像这样:

<script type="text/javascript" scr="/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="/public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="./public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="../public/init.js" charset="utf-8"></script>
<script type="text/javascript" scr="init.js" charset="utf-8"></script>

我的问题是为什么我的 /public/init.js 没有加载?我可以通过输入地址清楚地指向它,它将以文本形式显示文件的内容:

http://localhost:9000/public/init.js 

我检查了浏览器开发工具中的网络选项卡,init.js 完全被忽略了。 是否有任何安全策略阻止它加载? 谢谢。

【问题讨论】:

  • 在你的脚本标签中,你写的是scr而不是src,你的真实文件中也是这样吗?
  • 是的,很抱歉打扰你们了!谢谢你们!在我们讨论的过程中,您对如何在不使用模板引擎的情况下将变量和数据发送到纯 html 有任何建议吗?我了解jade/ejs 如何处理变量和数据,并且我也知道我可以构建一个REST API 来用纯html(旧样式)的http 请求重现相同的东西,但是还有其他方法吗?

标签: javascript html node.js express template-engine


【解决方案1】:

我猜你拼错了scr 它应该是src

<script type="text/javascript" src="/public/init.js" charset="utf-8"></script>

【讨论】:

  • 我无法用语言来形容我的耻辱!!!!!!!!!谢谢,我没有真正注意到这一点,这让我很生气!!!
猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 2022-08-15
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2018-12-11
  • 2017-05-07
相关资源
最近更新 更多