Express Server 404ing从索引发出的所有请求

时间:2016-02-21 15:12:12

标签: javascript node.js express

在下面的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()尝试了很多不同的变体,但是虽然我确定这是问题,但我们无法立足。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的服务器不处理除/之外的任何其他路径。要处理它们,您可以在第一条路线后添加:

app.get('*', function (req, res) => {
    res.sendFile(req.url, {root: filePaths.release})
});