Как исправить ошибку "FB" не определен no-undef в проекте create-react-app?
Я сделал проект, используя эту ссылку в качестве исходного файла.
https://github.com/facebookincubator/create-react-app
Но после того, как я попытался сделать кнопку входа в Facebook, следуйте своим официальным документам.
componentDidMount(){
console.log('login mount');
window.fbAsyncInit = function() {
FB.init({
appId : '320866754951228',
xfbml : true,
version : 'v2.6'
});
FB.getLoginStatus(function(response) {
//this.statusChangeCallback(response);
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
Поэтому я получил эти ошибки, когда браузер был обновлен.
Failed to compile.
Error in ./src/components/user_profile/LoginForm.js
/Sites/full_stack_production/xxxxx
70:13 error 'FB' is not defined no-undef
76:13 error 'FB' is not defined no-undef
✖ 2 problems (2 errors, 0 warnings)
Поэтому я думаю, потому что ESLint вызывает эти ошибки. Как я могу исправить это или сделать исключение для этой переменной FB
?
Благодарю!
Ответы
Ответ 1
ESLint не знает, что переменная FB
является глобальной. Вы можете объявить переменную, на которую вы ссылаетесь как глобальная, добавив следующее в начало файла:
/*global FB*/
Для получения дополнительной информации ознакомьтесь с разделом "Сведения о правилах" в официальных документах ESLint: http://eslint.org/docs/rules/no-undef
Ответ 2
Если вы используете приложение Create React, вам нужно явно захватить глобальные переменные из window
.
Например:
// It a global so need to read it from window
const FB = window.FB;
Однако, если библиотека доступна как пакет npm, вы можете использовать импорт:
// It an npm package so you can import it
import $ from 'jquery';
Надеюсь, это поможет!
Ответ 3
На основании того, что @дан-абрамов заявил в комментарии к другому ответу:
Не используйте FB
, используйте window.FB
Таким образом, вы четко определяете, откуда должна исходить переменная FB.
Ответ 4
Поместите это в свой файл.eslintrc, поэтому вам нужно только определить его один раз, а не в каждом отдельном файле:
"globals": {
"FB": true
}
Ответ 5
Я могу исправить это, используя this.FB
вместо этого просто FB