如何检测什么时候运行browserify?
我有一个库,我想在客户端和服务器端使用。 但是,因为request
与browserify不兼容,所以在使用browserify进行编译时,我需要使用一个名为browser-request
的不同库
if (inNodejsRuntime) { var request = require('request'); } else if (isBrowserifyRuntime) { var request = require('browser-request'); }
当浏览器正在运行的时候,以及在节点内部的时候,我该如何去检测
如果您只是使用兼容的API进行简单模块交换,则应使用package.json中的浏览器字段 。 所以对于你的例子,只是做
var request = require('request')
像之前一样,然后在package.json中放入:
{ "browser": { "request": "browser-request" } }
这样在浏览器中,当您require('request')
时,您将获得浏览器请求而不是请求。
你不应该做的是要求两个模块运行时检查是否存在window
或类似的属性。 这是因为,即使您只使用浏览器请求,也会将浏览器请求和请求捆绑到您的前端代码中,从而导致不必要的虚增文件大小。
接受的答案是正确的。 但是,如果您通过Googlesearch“browse browserify”来到这里,并希望获得更一般的答案,那么browserify会自动转换节点提供的全局process
。 您可以使用:
process.browser
这将在浏览器中为true
,在节点中undefined
。
我find了答案:
if (typeof window === 'undefined') { var request = require('request'); } else { var request = require('browser-request'); }
Superagent也看起来像一个非常好的select!
- Browserify:使用'package.json'中的'browser'字段replaceNPM模块的本地文件
- 如何使用Browserify指定自定义searchpath?
- 在包含Browserify的Node JS项目中包含JQuery Mobile
- 如何在不同的环境中避免使用茉莉花的长相对path(../../../)?
- 使用节点,mongodb和watchify时未findKerberos
- Browserify错误结束吞噬观察任务
- 利用浏览器的NodeJS文件进入浏览器
- Nodejs Browserify未捕获TypeError:存在不是一个函数
- 如何在运行browserified脚本之前设置process.env?