繁体   English   中英

Express NodeJS 路由错误文本/html 不是文本/事件流

[英]Express NodeJS Routing Error text/html is not text/event-stream

我有一个简单的 Node Express 服务器设置,它提供一个带有 bundle.js 的 html 文件。 每当我尝试添加捕获所有路由并重定向到主页的路由时,当我打开一个未映射的路由时,我会在控制台中收到一条错误消息

“EventSource 的响应的 MIME 类型(“text/html”)不是“text/event-stream”。中止连接。”

我不确定这意味着什么,我在尝试提供 index.html 时也遇到了问题(文件路径的问题),所以这可能与此有关。 我正在尝试在构建文件夹中提供 Index.html。

项目结构:
在此处输入图片说明

Index.js(服务器文件)

const http = require('http');
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');

const app = express();
const server = http.createServer(app);

app.use(bodyParser.json());

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

app.get('/', (req, res) => {
    res.sendFile('index.html', {root: path.join(__dirname, 'public/build')});
    res.end();
});

app.all('*', (req, res) => {
    console.log('triggered');
    res.redirect('/');
    res.end();
});


server.listen(3000);

奇怪的是,当我转到 localhost:3000 时,它会在节点控制台中打印“triggered”,如果我删除捕获任何其他路由的“app.all”代码行,则它不再抛出此错误:

“EventSource 的响应的 MIME 类型(“text/html”)不是“text/event-stream”。中止连接。”

但是,如果删除捕获路由的代码行,则会按预期收到错误“无法获取 /routename”。

索引.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>project</title>
</head>

<body>
<div id="root"></div>
<script type="text/javascript" src="bundle.js"></script></body>

</html>

在 Index.html 文件中呈现的内容

import React from 'react';
import './styles/index.css';

const App = () => {
    return (
        <div>
            <h1>Home Page</h1>
            <button onClick={null}>Click Me</button>
        </div>
    );
};

export default App;

Index.js(客户端)

import React from 'react';
import ReactDOM from 'react-dom';
import {Provider} from 'react-redux';
import App from './App';
import store from './redux/store';

require('webpack-hot-middleware/client');

ReactDOM.render(
    <Provider store={store}>
        <App/>
    </Provider>
    , document.getElementById('root')
);


我能够通过摆脱 index.js(客户端)文件中的 webpack 热中间件导入语句来解决这个问题。

require('webpack-hot-middleware/client');

Webpack 中间件提供 EventStream 并期望 EventSource 的响应在 text/event-stream 上提供,并且由于文件通过 text/html 提供,因此会引发该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM