如何检测browserify运行的时间?

时间:2014-04-13 02:34:00

标签: node.js browserify

我有一个我想在客户端和服务器端使用的库。但是,由于request与browserify不兼容,因此在使用browserify进行编译时,我需要使用名为browser-request的其他库

if (inNodejsRuntime) {
  var request = require('request');
} else if (isBrowserifyRuntime) {
  var request = require('browser-request');
}

如何检测浏览器何时运行与何时在节点内

3 个答案:

答案 0 :(得分:44)

接受的答案是正确的。但是如果你通过谷歌搜索“检测浏览器”来获得更一般的答案,浏览器会自动转换节点提供的全局process。您可以使用:

process.browser

在浏览器中为true,在节点中为undefined

答案 1 :(得分:30)

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

var request = require('request')

像之前一样然后在package.json中放置:

{
  "browser": {
    "request": "browser-request"
  }
}

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

这是因为即使您只是实际使用浏览器请求,您也会将浏览器请求和请求捆绑到您的前端代码中,从而导致文件大小不必要地膨胀。

答案 2 :(得分:3)

我找到了答案:

if (typeof window === 'undefined') {
  var request = require('request');
} else {
  var request = require('browser-request');
}

Superagent看起来也是一个非常好的选择!