让所有网站路径在express中加载相同的静态网站

时间:2016-06-10 14:37:28

标签: javascript node.js express

在我的快速服务器中,我希望所有路径都加载相同的静态网站,我尝试使用以下代码:

const express = require('express');
const app = express();

app.use('*', express.static('build'));
app.listen(3000);

不幸的是,当我导航到localhost上的任何路径时,我遇到以下控制台错误:

:3000/main.js/:1 Uncaught SyntaxError: Unexpected token <

当试图查看带有错误的JS文件时,它似乎正在为其提供index.html。

我知道这是由于通配符,但我想不出一种方法可以从静态服务器中彻底排除所有文件名和路径。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找更像这样的东西.. app.use(express.static('public')

如果您的树看起来像

ProjectName
| server.js
| public
   | index.html

您不需要*作为参数,因为设置express.static会将文件夹设置为公共视图。这是您分离服务器代码和客户端代码的方式。注意不要公开整个项目目录,因为人们可以访问您的服务器代码。这就是为什么你的客户端文件应该保存在公共文件夹或www文件夹(常见做法)

- 编辑

//this will server css, and js files so they can be linked into the html
app.use(express.static(__dirname + '/public'));

//this will force all url's except the public files to be given the index.html file.
app.use('*', function(req, res) {
  res.sendFile(__dirname + '/public/index.html');
});