nwjs reactjs,混淆了我的背景。 文档是不确定的

在我的nwjs应用程序中,我使用React来构build我的UI。 目前, React正在通过主文件index.html中的<script>标签加载。 index.html有另一个<script>标签,它载入main.js,它包含定义和渲染我的React组件的代码,以及require() )几个Node模块,比如“fs”和“McFly”。

这一切似乎工作,但是当我尝试使用另一个节点模块(react-inlinesvg)我得到一个错误,“文件是未定义的”。

在网上寻求帮助后,我得出结论React现在认为它正在服务器上运行? 奇怪的是,和之前我开始使用react-inlinesvg模块一样,它使用React.render (客户端渲染)很高兴地渲染组件。

如果您需要更多的背景或信息,请询问。

       

网上收集的解决方案 "nwjs reactjs,混淆了我的背景。 文档是不确定的"

这可能是你在服务器端渲染,或者你也在渲染双方。 在第二种情况下,您可以简单地嵌套导致您错误的行:

 if (process.env.BROWSER) { the line causing the error } 

如果错误消失,这意味着你也在服务器端! 我希望这有帮助…

基本上,如果你的代码是通用的 (或同构的,如果你想…),你可以只在客户端执行代码,你想这样做使用特定的样式表,例如:

 if (process.env.BROWSER) { require("../style/main.scss"); } 

当然,如果你想做服务器端的东西,你可以检查

 if (!process.env.BROWSER) { } 

如果有人面对这个问题,他可以用两种方法来解决:

解决scheme1:如果您使用的是nw.js 15或更高版本,请尝试启用混音上下文模式:在您的package.json中添加此标志:

 "chromium-args": "--mixed-context" 

解决scheme2 :使用这个黑客公开文档到全局对象:

 global.document = window.document;