Нет ограниченных глобалов

168

Я использую React и Redux для разработки веб-приложения, и когда я запустил свой проект, я получил это:

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

Search for the keywords to learn more about each error.

Я много искал, как решить эту проблему, но ни один из найденных ответов не помог мне, поэтому я обратился к переполнению стека.

Кто-нибудь знает, как исправить эту ошибку? Я ценю всю помощь, которую я могу получить.

Мартин Нордстрем
источник

Ответы:

409

Попробуйте добавить windowдо location(то есть window.location).

Chasen Bettinger
источник
15
Это должен быть принятый ответ. ESLint правильно сообщает, что вы пишете слабый код. Два других ответа, включая принятый ответ, не решают проблему, а только отключают ESLint, чтобы сообщить вам об этом.
eMike Уоллес
Действительно, правильный способ исправить это - поставить префикс местоположения с помощью window.location. По какой-то причине команда CRA в настоящее время считает location«запутанный браузер глобальным». Я бы сказал, что если вы используете CRA и не знаете об объекте местоположения, вы находитесь на ничейной земле. Может быть, они просто хотят сделать чтение URL раздражающим, что было бы понятно ...
Девин Дж Род
Я создал проблему github, специально спрашивая, действительно ли locationобъект является глобальным запутанным браузером, поэтому везде нужен префикс ... github.com/facebook/create-react-app/issues/7733window.
Девин Дж Род
5

Это простое и, возможно, не лучшее решение, но оно работает.

В строке над строкой вы получите свою ошибку, вставьте это:

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

Мартин Нордстрем
источник
5
Хорошее решение для проекта create-response-app, когда работники сферы обслуживания выделяются в виде BLOB-объектов. Upvoted.
ADC
7
Это не решает проблему, просто скрывает предупреждение.
Владимир Нул
0

Возможно, вы могли бы попробовать передать местоположение в компонент в качестве опоры. Ниже я использую ... другие реквизиты. Это оператор распространения, и он действителен, но не нужен, если вы явно передали свой реквизит, он просто используется в качестве заполнителя для демонстрационных целей. Кроме того, исследование разрушения, чтобы понять, откуда ({местоположение}) пришел.

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

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


export withRouter(MyComponent);
Стивен Шивз
источник
-2
/* eslint no-restricted-globals:0 */

это еще один альтернативный подход

Дэн Крюгер
источник