【问题标题】:Minimum server.js required to run react/redux application?运行 react/redux 应用程序所需的最小 server.js?
【发布时间】:2016-02-05 12:25:42
【问题描述】:

我已经使用 webpack 构建了我的项目,使用 babel 进行 ES6 转译,并具有以下预设:

{
  "presets": ["react", "es2015", "stage-1"]
}

webpack 生产配置如下:

var path = require('path');
var node_modules_dir = path.resolve(__dirname, 'node_modules');

module.exports = {
  entry: [ path.resolve(__dirname, 'src/index.js') ],
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      test: /\.(js|jsx)$/,
      exclude: [node_modules_dir],
      loader: 'babel'
    },
    {
      test: /\.(png|jpg)$/,
      exclude: [node_modules_dir],
      loader: 'url?limit=100000'
    },
    {
      test: /\.svg$/,
      exclude: [node_modules_dir],
      loader: 'svg-url-loader'
    },
    {
      test: /\.scss$/,
      exclude: [node_modules_dir],
      loader: 'style!css!sass'
    }]
  },
  resolve: { extensions: ['', '.js', '.jsx'] }
};

我现在想将它部署到服务器。生产就绪文件位于dist 文件夹中,因此:

dist/
  index.html
  bundle.js

我提到这一点,因为我需要我的入口点是 dist/index.html

由于我以前从未部署过,我不确定我的 server.js 文件应该是什么样子,经过一些研究,我似乎需要使用 http 服务器或 express 服务器,以及一些 babel 蒸腾以及 es6 语法。

可以使用的最低设置是什么?

【问题讨论】:

  • react 和 redux 都是客户端。你可以使用任何 HTTP 服务器来提供这个服务,包括像 python SimpleHTTPServer 这样简单的东西,如果你想使用 nodejs 然后谷歌“http server nodejs”,这应该会引导你找到大量相关资源。

标签: javascript node.js reactjs server webpack


【解决方案1】:

React/redux 是客户端,即浏览器执行你的代码,服务器只需要获取它。

您的服务器不需要做任何聪明的事情,例如转译,因为您的构建过程已经完成了这些并创建了一个“捆绑包”,可以在浏览器中执行。因此,快速静态服务器(例如使用 Nginx、Apache 或 Varnish 的服务器)只需要提供 dist 文件夹的内容即可。

Node、Python 什么都可以,但你不需要它们,你只需要提供文件。

【讨论】:

  • 那么,为什么这种方法不能通过在浏览器中打开索引文件来实现呢? (来自我的电脑)
  • 您的 index.html 或 js 文件是否包含任何外部链接?例如字体、图像或通过某种 cdn 的依赖项?文件协议不允许外部链接。从 file:// 和从本地服务器运行不是一回事。你得到什么错误?
  • 删除了 google 字体,因为我通过 cdn 将它们包括在内,但是没有显示任何内容,我得到的错误是这个:Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with URL 'file:///../index.html' cannot be created in a document with origin 'null'.
  • 哦,好吧,是的,这是有道理的。不过,就您的问题而言,这并不重要。您从文件中提供服务,使用 nginx 等是不一样的。它与您浏览器中围绕文件协议提供服务的安全问题有关。通过使用服务器,它将不再来自文件,即使是本地的。
  • 我在 webpack 开发服务器和 apache 中运行相同的 React/redux 代码,但是 apache 版本不加载任何样式等。我需要做些什么来设置 Apache 来运行对 Redux 代码做出反应?
猜你喜欢
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 2018-08-24
  • 2022-06-11
  • 2019-01-22
  • 1970-01-01
相关资源
最近更新 更多