【问题标题】:Node.js serve HTML, but can't load script files in served pageNode.js 提供 HTML,但无法在服务页面中加载脚本文件
【发布时间】:2018-06-11 13:13:24
【问题描述】:

我正在尝试使用 mongoDB 数据库和 Node.js + express 制作一个小登录页面。我是 Node.js 的新手,所以解决方案可能比我想象的要容易。 问题是:当我在连接到服务器页面时提供 HTML 文件时,我无法使用 html 文件中引用的 JavaScript 文件。我该如何解决? P.s index.html 和 client.js 文件都位于一个名为“client”的文件夹中。

代码:

var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(__dirname + 'client'));
app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/client/index.html'));
});

HTML 文件:

 <!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Login</title>
    <meta name="description" content="Login Page">
    <meta name="author" content="AlbertoCoder">
    <script src="/client/client.js"></script>
</head>
<body>
</body>
</html>

【问题讨论】:

    标签: javascript html node.js mongodb express


    【解决方案1】:

    您可以使用它,但您需要通过有效路径从您的服务器提供该 javascript 文件。

    在您的 HTML 中,您尝试从 /client/client.js 检索 javascript 文件

    这里的提示是:

    想象一下您的服务器的以下 URL http://myserver:8080/

    现在,您的 HTML 正在尝试通过 http://myserver:8080/client/client.js 检索 js 文件

    如您所见,您的服务器未提供该资产,因此您将无法检索该 js 文件。

    执行以下操作:

    app.get('/client/client.js', function(req, res) {
        res.sendFile(path.join(__dirname + '/client.js'));
    });
    
    app.get('/', function(req, res) {
        res.sendFile(path.join(__dirname + '/client/index.html'));
    });
    

    【讨论】:

    • 如果我做对了,这应该在我尝试访问服务器中的页面 /client/client.js 时发送 javascript 文件,对吗?但是,如果我想在用户访问主页(“/”)时发送带有脚本的 html 页面,我应该使用相同的功能吗?因为它给了我一个关于标题在发送后无法设置的错误。 P.s 谢谢,这真的很有帮助! :)
    • 不,不能同时发送。只需将这些 get 分开放置,浏览器就会发出两个请求,一个用于 index,另一个用于 client.js。
    • 哦,我明白了! app.get() 方法,当客户端连接到任何页面或进入该页面时执行匿名函数?
    • 完成了,抱歉没早点做,第一次用stackoverflow啊哈哈
    • @AlbertoCalabrese 我面临同样的问题。如果我应用您发布的方式,浏览器会在 .js 文件中显示代码。如果您愿意,可以在这里查看:stackoverflow.com/questions/64636438/…
    【解决方案2】:

    创建一个虚拟路径。

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

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 2019-11-11
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 2015-08-07
      • 2019-05-26
      相关资源
      最近更新 更多