No hay restricciones globales

168

Estoy usando React y Redux para desarrollar una aplicación web y cuando comencé mi proyecto obtuve esto:

Line 13:  Unexpected use of 'location'  no-restricted-globals

Search for the keywords to learn more about each error.

Busco mucho sobre cómo resolverlo, pero ninguna de las respuestas que encontré me ayudó, así que recurrí al desbordamiento de pila.

¿Alguien sabe cómo solucionar este error? Agradezco toda la ayuda que puedo obtener.

Martin Nordström
fuente

Respuestas:

406

Intente agregar windowantes location(es decir window.location).

Chasen Bettinger
fuente
15
Esta debería ser la respuesta aceptada. ESLint le informa correctamente que está escribiendo código débil. Las otras dos respuestas, incluida la respuesta aceptada, no resuelven el problema, sino que solo deshabilitan a ESLint para que no se lo cuente.
eMike Wallace
De hecho, la forma correcta de solucionar esto es prefijar la ubicación con window.location. Por alguna razón, el equipo de CRA actualmente considera locationun "navegador global confuso". Yo diría que si está utilizando CRA y no sabe sobre el objeto de ubicación, está en tierra de nadie. Tal vez lo único que quieren hacer url molesto, lo que sería comprensible la lectura ...
Devin G Rhode
Creé un problema de github preguntando específicamente si el locationobjeto realmente es un navegador global confuso, por lo tanto, necesita el window.prefijo en todas partes ... github.com/facebook/create-react-app/issues/7733
Devin G Rhode
5

Esta es una solución simple y quizás no la mejor, pero funciona.

En la línea sobre la línea que aparece su error, pegue esto:

// eslint-disable-next-line no-restricted-globals

Martin Nordström
fuente
55
Buena solución para un proyecto de crear-reaccionar-aplicación al alinear a los trabajadores de servicios como blobs. Votado
adc
77
Esto no resuelve el problema, solo oculta la advertencia.
Vladimir Nul
0

Quizás podría intentar pasar la ubicación al componente como accesorio. A continuación uso ... otros accesorios. Este es el operador de propagación, y es válido pero innecesario si pasaste tus accesorios explícitamente, solo está allí como un lugar para fines de demostración. Además, investigue la desestructuración para comprender de dónde proviene ({location}).

import React from 'react';
import withRouter from 'react-router-dom';

const MyComponent = ({ location, ...otherProps }) => (whatever you want to render)


export withRouter(MyComponent);
Steven Sheaves
fuente
-2
/* eslint no-restricted-globals:0 */

es otro enfoque alternativo

Dan Krueger
fuente