Как определить, когда запущен браузер?
У меня есть библиотека, которую я хочу использовать как на стороне клиента, так и на стороне сервера. Однако, поскольку request
не совместим с браузером, при компиляции с использованием браузера мне нужно использовать другую библиотеку под названием browser-request
if (inNodejsRuntime) {
var request = require('request');
} else if (isBrowserifyRuntime) {
var request = require('browser-request');
}
Как я могу обнаружить обнаружение при запуске браузера vs, когда он находится внутри node
Ответы
Ответ 1
Если вы просто выполняете простой обмен модулем с совместимыми API-интерфейсами, вы должны использовать поле браузера в package.json. Итак, для вашего примера просто сделайте
var request = require('request')
как раньше, а затем в package.json put:
{
"browser": {
"request": "browser-request"
}
}
Таким образом, в браузере вы получите запрос браузера вместо запроса, когда вы require('request')
.
То, что вам не нужно делать, - это оба модуля с проверкой времени выполнения для наличия window
или какого-либо подобного свойства. Это связано с тем, что вы получите запрос браузера и запрос, входящий в ваш внешний код, даже если вы на самом деле используете браузер-запрос, что приводит к ненужно раздутому размеру файла.
Ответ 2
Принятый ответ правильный. Но если вы попали сюда с помощью googling 'detect browsify' и хотите получить более общий ответ, браузер автоматически преобразует глобальный process
node. Вы можете использовать:
process.browser
который будет true
в браузере, undefined
в node.
Ответ 3
Я нашел ответ:
if (typeof window === 'undefined') {
var request = require('request');
} else {
var request = require('browser-request');
}
Суперагент также выглядит очень хорошей альтернативой!