Node.js提供HTML,但无法在提供的页面中加载脚本文件

时间:2018-01-01 14:59:44

标签: javascript html node.js mongodb express

我试图使用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>

2 个答案:

答案 0 :(得分:5)

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

在您的HTML中,您尝试从/client/client.js

检索javascript文件

这里的提示是:

想象一下服务器的以下网址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'));
});

答案 1 :(得分:2)

创建虚拟路径。

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