if语句中的Require语句即使返回false也会运行

时间:2018-07-16 13:19:22

标签: javascript node.js reactjs webpack

我添加了一条require语句,要求if语句中的ws库,以便仅当它不是浏览器时才将其导入。例如,仅要求ws进行测试。

if (!process.browser) {
  webSocketLinkConfig.webSocketImpl = require('ws');
}

但是问题是,即使其余分配webSocketLinkConfig.webSocketImpl都没有发生,需求也会执行,并且我在浏览器中收到一条警告,提示Module not found: Can't resolve 'bufferutil' in '/Users/pubudu/Projects/FleetManager/fm-dash-front/node_modules/ws/lib'

知道发生了什么以及如何解决?

这是使用react构建的create-react-app应用。

1 个答案:

答案 0 :(得分:0)

我以前没有使用过process.broswer,所以可能您没有设置它。我创建了一个沙箱,用于使用navigator来获取您是否在浏览器中运行。

  

导航器对象包含有关浏览器的信息。 -w3schools

if (!navigator) {
  webSocketLinkConfig.webSocketImpl = require('ws');
}

Here is a CodeSandbox example,该文本(使用控制台)显示了如何使用navigator来指示您是否在浏览器中运行代码。希望这会有所帮助。