Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Javascript 当目标节点打开时,网页包忽略代码拆分_Javascript_Node.js_Reactjs_Webpack_React Router - Fatal编程技术网

Javascript 当目标节点打开时,网页包忽略代码拆分

Javascript 当目标节点打开时,网页包忽略代码拆分,javascript,node.js,reactjs,webpack,react-router,Javascript,Node.js,Reactjs,Webpack,React Router,我有一个节点应用程序,它使用react路由器在服务器端呈现react视图。我的问题是我正在使用require。请确保在客户端进行代码拆分,但在编译服务器端代码时不希望进行代码拆分。这是我的网页配置: { entry: path.join(__dirname, '../server/app.js'), target: 'node', output: { path: './', filename: 'server.js' }, module: { load

我有一个节点应用程序,它使用react路由器在服务器端呈现react视图。我的问题是我正在使用
require。请确保
在客户端进行代码拆分,但在编译服务器端代码时不希望进行代码拆分。这是我的网页配置:

{
  entry: path.join(__dirname, '../server/app.js'),
  target: 'node',
  output: {
    path: './',
    filename: 'server.js'
  },
  module: {
    loaders: [
      { test: /\.js$/, loader: 'babel', exclude: /node_modules/ },
      { test: /\.hbs$/, loader: 'handlebars-loader', include: /client/ }
    ]
  },
  externals: nodeModules
}
当我运行它时,我会得到server.js、1.server.js、2.server.js等等。我宁愿只有一个server.js文件

在每个路由文件的顶部,我有:

if (typeof require.ensure !== 'function') require.ensure = (d, c) => c(require);

当我在开发中使用
require('babel/register')
时,它就起作用了,但我更希望有一个用于生产的编译文件

我已经用围绕require的条件说明了这一点。如果是浏览器版本,则需要。确保如果是服务器版本,则只需要。我使用为每个构建的环境定义“常量”变量,因此它看起来像

if (BUILD_BROWSER) {
  require.ensure('foo.js', function() { ... });
} else {
  require('foo.js');
  ...
}
Webpack的静态分析只能理解布尔值,所以像
if(BUILD_TARGET===“browser”)
这样的操作是行不通的;解析器不会遵循逻辑,将处理这两个需求


如果您使用的是Uglify插件,那么将去掉不需要的条件逻辑,这样您就不会在生产构建中膨胀。

谢谢!工作起来很有魅力。但是React存在问题,服务器端呈现的HTML和客户端生成的HTML之间的校验和不匹配,从而失去了服务器端呈现的许多“好处”。即,服务器和客户端各自呈现不同的HTML。此外,我甚至不知道客户机上如何有条件地从DOM中嵌入的不同js包(仅针对给定的路由渲染)加载,而不触发主包以包含相同的文件。似乎它只能为每条路线创建入口点,而不是
确保