在下面的express/gulpfile.js代码中,我在快速服务index.html
时遇到问题,但索引本身无法命中lib/*
目录,并且仅 404s 在我的 index.html
顶部发出的所有请求。
我正在使用 nodemon 代理浏览器同步。不过我很确定它与我的浏览器同步配置无关,因为当我只使用 node config/server.js
时,同样的问题仍然存在。
快速配置:
var express = require('express');
var path = require('path');
var filePaths = require('./filePaths');
var app = express();
//filePaths.releaseIndex === './release/index.html'
app.get('/', function (req, res) {
res.sendFile(filePaths.releaseIndex, {root: './'});
});
app.listen(5000);
Gulp 任务配置:
//filePaths.release === './release'
//filePaths.server === './config/server.js'
gulp.task('browser-sync', ['nodemon'], function() {
browserSync.init(null, {
proxy: "http://localhost:5000",
files: [filePaths.release],
browser: "google chrome",
port: 7000
});
});
gulp.task('nodemon', function (cb) {
var started = false;
return nodemon({
script: filePaths.server
}).on('start', function () {
if (!started) {
cb();
started = true;
}
});
});
index.html:
<script src="lib/es6-shim.min.js"></script>
文件夹结构:
config
server.js
release
index.html
lib
es6-shim.min.js
Rx.js
...
我在 res.sendFile()
中尝试了许多不同的变体,但就是无法立足,尽管我确信这就是问题所在。
有什么想法吗?
最佳答案
您的服务器不处理除 /
之外的任何其他路径。要处理它们,您可以在第一条路线之后添加以下内容:
app.get('*', function (req, res) => {
res.sendFile(req.url, {root: filePaths.release})
});
关于javascript - Express 服务器 404ing 所有来自索引的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35537815/