【问题标题】:How to use an express server for production alongside webpack-dev-server如何将 express 服务器与 webpack-dev-server 一起用于生产
【发布时间】:2018-01-21 05:21:24
【问题描述】:

我目前正在使用 React 构建一个应用程序,它与单独后端的 API 通信。在我的server.js 中,我在一个端口上快速监听WebpackDevServer,另一个端口用于服务简单的index.html。事情是这样的:

new WebpackDevServer(webpack(config), {
    publicPath: config.output.publicPath,
    watchOptions: {
      aggregateTimeout: 300,
      poll: 1000
    }
  })
  .listen(3001, '0.0.0.0', function (err, result) {
    if (err) {
      console.log(err);
    }

    console.log('Running at http://0.0.0.0:3001');
  });

app.use(express.static(__dirname + '/dist'));

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

app.listen(4000, function() {
    console.log('Running at http://0.0.0.4000')
})
  • 如何根据我的环境有条件地选择运行哪个服务器?我不希望两个端口都运行我的前端实例。
  • 修改package.json 中的scripts 部分以适应更改的好方法是什么?

【问题讨论】:

  • 监听 webpack 实例的目的是什么? 1. Webpack 开发服务器仅用于开发目的,因此您不应该绑定您的 api 来监听 WebpackDevServer,因为您可能会在某个时候部署该 API。 2. React 是用 webpack 预构建的,所以我会遵从 React 处理 index.html 的方法,因为你只是想重新提供它。
  • 好吧,我没有将我的 API 与任何东西“绑定”,它是另一个端口上的 Rails 后端,独立于 express。此外,从技术上讲,React 并没有预构建 webpack。
  • 抱歉,React 是通过 web 包“配置”的。只是想了解为什么您不只是将默认配置与 react 一起使用。也许我误解了你的问题。

标签: reactjs express webpack


【解决方案1】:

您可以将代码拆分为两个单独的文件。并根据您的环境启动它们。

 "scripts": {
    "start-dev": "node src/webpack.js",
    "start-prod": "node src/server.js"
  }

【讨论】:

  • 上述方法有效,但对于任何想要使用单个配置文件进行操作的人来说,这里有一个有用的链接:link
猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2017-05-22
  • 2016-05-25
  • 2015-09-15
  • 2018-08-05
  • 1970-01-01
  • 2018-03-08
相关资源
最近更新 更多