Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 如何从服务器端打包中跳过React组件?_Reactjs_Webpack - Fatal编程技术网

Reactjs 如何从服务器端打包中跳过React组件?

Reactjs 如何从服务器端打包中跳过React组件?,reactjs,webpack,Reactjs,Webpack,在react组件中,我使用的是依赖于浏览器环境的JS库。我通过在脚本标记中指定source来使用它。但是,当从webpack为服务器端打包时,我从使用该库引用的组件中得到错误,因为它无法从服务器端找到它 解决方案是什么?通常,当我这样做时,我会在webpack中添加一个环境变量,然后在任何功能中检查该环境变量是否存在。如果没有,则您在浏览器中。如果是这样,您就在服务器上 您还可以执行诸如检查窗口是否已定义之类的操作。基本上检查您所处的环境,并使用条件来执行代码。您可以在代码上执行此操作: con

在react组件中,我使用的是依赖于浏览器环境的JS库。我通过在脚本标记中指定source来使用它。但是,当从webpack为服务器端打包时,我从使用该库引用的组件中得到错误,因为它无法从服务器端找到它


解决方案是什么?

通常,当我这样做时,我会在webpack中添加一个环境变量,然后在任何功能中检查该环境变量是否存在。如果没有,则您在浏览器中。如果是这样,您就在服务器上


您还可以执行诸如检查
窗口
是否已定义之类的操作。基本上检查您所处的环境,并使用条件来执行代码。

您可以在代码上执行此操作:

const Foo = () => <div>Hello</div> 
const Bar = () => <div>World</div>

...
render () {
  return (typeof document === 'undefined')
     ? <Foo />
     : <Bar />
}
....
constfoo=()=>你好
常数条=()=>世界
...
渲染(){
返回(文档类型===“未定义”)
? 
: 
}
....

如果我没有正确使用它,请告诉我。如果我不够清楚,请道歉。问题出在导入中,而不是在NodeJS服务器中不起作用的代码的任何部分。只是import语句导致加载一个具有“navigator”、“window”等引用的模块,因此在构建网页包时失败。我认为在ES6中没有很好的方法进行有条件的导入。