【问题标题】:express server returns errors on startexpress 服务器在启动时返回错误
【发布时间】:2017-03-30 03:55:16
【问题描述】:

我很难弄清楚为什么我的服务器在启动时会返回错误。我没有使用 webpack-dev-server,因为它不编译 JS 文件,所以我决定制作自己的服务器。当我打开浏览器时,它显示一条错误消息:

server.js:

var webpack = require('webpack'),
    path = require('path'),
    express = require('express'),
    devMiddleware = require('webpack-dev-middleware'),
    hotMiddleware = require('webpack-hot-middleware'),
    config = require('./webpack.config'),
    app = express(),
    host = '127.0.0.1',
    port = 8000;

var middleware = devMiddleware(webpack({
  entry: path.join(__dirname, 'app/src/main.js'),
  output: {
    path: '/',
  }
}), {
  noInfo: true,
  publicPath: config.output.publicPath,
  index: path.join(__dirname, 'app/index.html'),
  stats: {
    colors: true
  }
});

app.use(middleware);

app.use(hotMiddleware(webpack(config)));

app.get('/', function(req, res) {
  res.write(middleware.fileSystem.readFileSync(path.join(__dirname, 'app/index.html')));
  res.end();
});

app.listen(port, host, function(err) {
  if (err) {
    console.error(err);
  }
  console.log('Listening on ' + host + ':' + port);
});

项目文件和目录:

我不明白为什么会这样。也许我错过了很多重要的插件或依赖项来使它像 react-hot-loader 一样成功?还是没关系?

【问题讨论】:

    标签: express server webpack


    【解决方案1】:

    据我所知,您不应该使用 middleware.fileSystem.readFileSync() 来处理对 index.html 的请求(这不是您的捆绑包的一部分)。

    只需使用fs.readFileSync(),或者最好使用res.sendFile()

    app.get('/', function(req, res) {
      res.sendFile(path.join(__dirname, 'app/index.html'));
    });
    

    【讨论】:

    • 所以我应该在我的server.js 中要求fs
    • @jst.sixteen 如果你想使用fs.readFileSync(),那么可以。
    • 好的。谢谢
    猜你喜欢
    • 2020-10-06
    • 2015-12-19
    • 2022-11-30
    • 2016-07-20
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2018-07-17
    相关资源
    最近更新 更多