如何检测browserify运行的时间?

sam*_*mol 19 node.js browserify

我有一个我想在客户端和服务器端使用的库.但是,因为request与browserify不兼容,所以在使用browserify进行编译时,我需要使用另一个名为的库browser-request

if (inNodejsRuntime) {
  var request = require('request');
} else if (isBrowserifyRuntime) {
  var request = require('browser-request');
}
Run Code Online (Sandbox Code Playgroud)

如何检测浏览器何时运行以及何时进入节点内部

amw*_*ter 44

接受的答案是正确的.但是如果你通过谷歌搜索'检测浏览器'并想要更一般的答案来到这里,browserify会自动转换节点提供的全局process.您可以使用:

process.browser
Run Code Online (Sandbox Code Playgroud)

它将true在浏览器中,undefined在节点中.

  • 谢谢.太难找到这个了. (2认同)

sub*_*ack 30

如果您只是使用兼容的API进行简单的模块交换,则应使用package.json中的browser字段.所以对于你的例子,就这样做

var request = require('request')
Run Code Online (Sandbox Code Playgroud)

喜欢之前然后在package.json中放:

{
  "browser": {
    "request": "browser-request"
  }
}
Run Code Online (Sandbox Code Playgroud)

这样在浏览器中,您将获得浏览器请求而不是请求require('request').

不应该做的是要求两个模块都运行时检查是否存在window或类似的属性.这是因为即使您实际上只使用浏览器请求,您也会将浏览器请求和请求捆绑到您的前端代码中,从而导致文件大小不必要地膨胀.