Подтвердить что ты не робот

Как определить, когда запущен браузер?

У меня есть библиотека, которую я хочу использовать как на стороне клиента, так и на стороне сервера. Однако, поскольку request не совместим с браузером, при компиляции с использованием браузера мне нужно использовать другую библиотеку под названием browser-request

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

Как я могу обнаружить обнаружение при запуске браузера vs, когда он находится внутри node

4b9b3361

Ответ 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');
}

Суперагент также выглядит очень хорошей альтернативой!