如何修复错误 'FB' is not defined no-undef on create-react-app project?
How to fix error 'FB' is not defined no-undef on create-react-app project?
我使用这个 link 作为我的起始文件制作了这个项目。
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
变量设置例外?
谢谢!
我可以通过使用 this.FB
而不是 FB
来解决这个问题
ESLint 不知道变量 FB
是全局变量。您可以通过将以下内容添加到文件顶部来声明您引用的全局变量:
/*global FB*/
有关更多信息,请查看官方 ESLint 文档的 "Rule Details" 部分:http://eslint.org/docs/rules/no-undef
如果你使用Create React App,你需要显式地从window
.
中获取全局变量
例如:
// It's a global so need to read it from window
const FB = window.FB;
但是,如果该库作为 npm 包提供,您可以使用导入:
// It's an npm package so you can import it
import $ from 'jquery';
希望对您有所帮助!
基于@dan-abramov 在对另一个答案的评论中所述:
Don't use FB
, use window.FB
这样,您就可以明确定义变量 FB 的来源。
将其放入您的 .eslintrc 文件中,这样您只需定义一次而不是在每个文件中:
"globals": {
"FB": true
}
我使用这个 link 作为我的起始文件制作了这个项目。
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
变量设置例外?
谢谢!
我可以通过使用 this.FB
而不是 FB
ESLint 不知道变量 FB
是全局变量。您可以通过将以下内容添加到文件顶部来声明您引用的全局变量:
/*global FB*/
有关更多信息,请查看官方 ESLint 文档的 "Rule Details" 部分:http://eslint.org/docs/rules/no-undef
如果你使用Create React App,你需要显式地从window
.
中获取全局变量
例如:
// It's a global so need to read it from window
const FB = window.FB;
但是,如果该库作为 npm 包提供,您可以使用导入:
// It's an npm package so you can import it
import $ from 'jquery';
希望对您有所帮助!
基于@dan-abramov 在对另一个答案的评论中所述:
Don't use
FB
, usewindow.FB
这样,您就可以明确定义变量 FB 的来源。
将其放入您的 .eslintrc 文件中,这样您只需定义一次而不是在每个文件中:
"globals": {
"FB": true
}