ไม่มีวง จำกัด


168

ฉันใช้ React และ Redux เพื่อพัฒนา webapp และเมื่อฉันเริ่มโครงการฉันได้รับสิ่งนี้:

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

Search for the keywords to learn more about each error.

ฉันค้นหาวิธีแก้ปัญหาได้มากมาย แต่ไม่มีคำตอบที่ฉันพบเลยช่วยฉันเลยหันไปหา Stack overflow

ไม่มีใครรู้วิธีแก้ไขข้อผิดพลาดนี้หรือไม่? ฉันขอขอบคุณทุกความช่วยเหลือที่ฉันสามารถได้รับ

คำตอบ:


408

ลองเพิ่มwindowก่อนlocation(เช่นwindow.location)


15
นี่ควรเป็นคำตอบที่ยอมรับได้ ESLint ช่วยให้คุณรู้ว่าคุณกำลังเขียนรหัสที่อ่อนแอ อีกสองคำตอบรวมถึงคำตอบที่ยอมรับไม่ได้แก้ปัญหา แต่ปิดการใช้งาน ESLint จากการบอกคุณเกี่ยวกับมัน
eMike Wallace

อันที่จริงวิธีที่ถูกต้องในการแก้ไขปัญหานี้คือการใส่คำนำหน้าตำแหน่งด้วย window.location ด้วยเหตุผลบางอย่างทีม CRA ในปัจจุบันพิจารณาว่าlocation"เบราว์เซอร์ที่สับสนทั่วโลก" ฉันว่าถ้าคุณใช้ CRA และไม่รู้เกี่ยวกับวัตถุตำแหน่งคุณอยู่ในดินแดนที่ไม่มีมนุษย์ บางทีพวกเขาแค่ต้องการทำให้การอ่าน url น่ารำคาญซึ่งจะเข้าใจได้ ...
Devin G Rhode

ฉันสร้างปัญหา GitHub ขอเฉพาะถ้าlocationวัตถุจริงๆเป็นเบราว์เซอร์สับสนทั่วโลกจึงต้องwindow.คำนำหน้าทุกที่ ... github.com/facebook/create-react-app/issues/7733
วินโรดไอส์ G

5

นี่เป็นวิธีที่ง่ายและอาจไม่ใช่วิธีที่ดีที่สุด แต่ใช้งานได้

ในบรรทัดด้านบนบรรทัดที่คุณได้รับข้อผิดพลาดให้วางสิ่งนี้:

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


5
ทางออกที่ดีสำหรับโครงการสร้างแอปปฏิกิริยาเมื่อเติมอินไลน์การให้บริการเป็น blobs upvoted
adc

7
นี่ไม่ได้แก้ปัญหาเพียงซ่อนคำเตือน
Vladimir Nul

0

บางทีคุณอาจลองส่งผ่านตำแหน่งไปยังส่วนประกอบเป็นเสา ด้านล่างฉันใช้ ... otherProps นี่คือโอเปอเรเตอร์การแพร่กระจายและถูกต้อง แต่ไม่จำเป็นถ้าคุณส่งผ่านอุปกรณ์ประกอบฉากของคุณอย่างชัดเจนมันเป็นเพียงแค่มีผู้เป็นสถานที่สำหรับการสาธิต นอกจากนี้การทำลายโครงสร้างการวิจัยเพื่อทำความเข้าใจว่า ({location}) มาจากที่ใด

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

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


export withRouter(MyComponent);

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.