Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么在我进行服务器端渲染时,客户端试图要求一个库?_Reactjs_Webpack_Server Side Rendering - Fatal编程技术网

Reactjs 为什么在我进行服务器端渲染时,客户端试图要求一个库?

Reactjs 为什么在我进行服务器端渲染时,客户端试图要求一个库?,reactjs,webpack,server-side-rendering,Reactjs,Webpack,Server Side Rendering,我正在尝试在我的react应用程序上实现服务器端渲染,但遇到了这一错误。 这是我的webpack.config.js文件。当我运行脚本npm start时,一切都正确编译 var fs = require('fs'); var nodeModules = {}; fs.readdirSync('node_modules') .filter(function(x) { return ['.bin'].indexOf(x) === -1; }) .forEach(functio

我正在尝试在我的react应用程序上实现服务器端渲染,但遇到了这一错误。 这是我的webpack.config.js文件。当我运行脚本
npm start
时,一切都正确编译

var fs = require('fs');

var nodeModules = {};
fs.readdirSync('node_modules')
  .filter(function(x) {
    return ['.bin'].indexOf(x) === -1;
  })
  .forEach(function(mod) {
    nodeModules[mod] = 'commonjs ' + mod;
  });



module.exports = {
  entry: [
    './server.js'
  ],
  target: 'node',
  output: {
    path: __dirname,
    publicPath: '/',
    filename: 'bundle.js'
  },
  externals: nodeModules,
  module: {
    loaders: [{
      exclude: /node_modules/,
      loader: 'babel',
      query: {
        presets: ['react', 'es2015', 'stage-1']
      }
    }]
  },
  resolve: {
    extensions: ['', '.js', '.jsx']
  },
  devServer: {
    historyApiFallback: true,
    contentBase: './'
  }
};

我认为主要的问题是webpack认为bundle.js是为节点环境构建的。因此,它假设require是可用的。无论它是针对浏览器的,它都会抛出一个错误,因为require不可用。我不确定您的webpack.config.js是用于服务器还是用于浏览器,因为入口点是server.js,而输出是用于bundle.js,我认为这是用于浏览器的


看看服务器渲染教程。基本上,您必须为服务器和浏览器提供一个webpack配置文件。服务器webpack配置文件将有一个入口点,其中定义了服务器。而浏览器网页包配置文件将有一个入口点,在该入口点调用
react dom
render方法。然后,确保浏览器网页包配置的输出是html中使用的,而不是服务器上使用的。

Ok,这更有意义。因此,客户端将有一个webpack.config.js,服务器端将有一个webpack.server.config.js?@joethemow是的。确保同时为客户端和服务器包运行build命令。因此,我正在使用您提供的教程链接中的脚本。npm start:prod会正确执行吗?@joethemow将为客户端和服务器运行构建,然后运行生产服务器。如果您只想构建代码包,只需让npm运行buildok perfect即可。你知道怎么解决这个问题吗<代码>窗口未定义。我理解错误发生的原因,但不知道如何修正我的想法。