flexdinesh / flexdinesh/browser-or-node

in isJsDom there is no check on navigator.userAgent

Open
#28 1 comment 2 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
251
Forks
20
PR merge metrics
No merged PRs in 30d

Description

even using 2.1.1 logic, when i run it in node (alpine14), i get the following error:

```
(navigator.userAgent.includes("Node.js") ||
^
TypeError: Cannot read property 'includes' of undefined
```
when i evaluate each part, i can see these various values:
```typeof window !== "undefined"```
true

```window.name === "nodejs"```
false

therefore,
```(typeof window !== "undefined" && window.name === "nodejs")```
is false

so, one would think it would short circuit, but for some reason it continues on to the OR where

```typeof navigator !== "undefined"```
is true

because

navigator is an object with
```{appName: 'nodejs'}```

but then it blows up here because there i no userAgent:

```navigator.userAgent.includes("Node.js")```
Uncaught TypeError TypeError: Cannot read property 'includes' of undefined

so, it seems like the checks are not preventing it from trying to access a property on an undefined object (navigator.userAgent). would appreciate if you could identify a way to make this work for me. we are using bitgo_service which uses your code. not sure how this works for others and not for me, but i can override the dependency of the current bitgo version we are using, if you can create an updated package.

many thanks!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.