【问题标题】:Cannot find name 'FB' [ts]找不到名称“FB”[ts]
【发布时间】:2018-07-08 16:28:35
【问题描述】:

我正在尝试初始化 JavaScript SDK 以最终使用 Facebook Graph API。但它一直说Cannot find name FB,不知道为什么。这是我所做的,

componentDidMount() {
    (window as any).fbAsyncInit = function() {
        FB.init({ // this FB errors out
            appId            : "my-app-id",
            autoLogAppEvents : true,
            xfbml            : true,
            version          : "v2.11"
        });
    };

    (function(d: any, s: any, id: any) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return; }
    js = d.createElement(s); js.id = id;
    js.src = "https://connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, "script", "facebook-jssdk"));
}

附:我正在使用TSLint,这就是为什么我拥有所有这些typedef any

【问题讨论】:

  • 您是否尝试过使用“window.fbAsyncInit”,并且通常没有添加那些奇怪的 TSLint?哪里说找不到FB?在其他地方,还是在 FB.init?
  • 就在FB.init。不,我没有尝试不使用TSLint,因为如果它不适用于TSLint,它对我来说几乎毫无用处。
  • 您有我们的测试链接吗?有了手头的信息,我们只能说 js sdk 没有被加载。这正是错误消息所说的内容。
  • FB 是一个全局 window 对象 (window.FB),在加载 connect.facebook.net/en_US/sdk.js 时提供。要让 tslint 知道这个全局 FB 命名空间来自哪里,您需要在各自的 lint rc 中声明它或为它定义一个接口。

标签: facebook-graph-api react-tsx


【解决方案1】:

如果您在使用 Angular CLI 时有嵌套应用程序,请安装 https://www.npmjs.com/package/@types/facebook-js-sdk 并将 facebook-js-sdk 添加到 types 中的 tsconfig.tstsconfig.app.json

例如tsconfig.app.json:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "../../out-tsc/app",
    "types": [
      "node",
      "gapi", // google
      "gapi.auth2", // google
      "facebook-js-sdk" // facebook
    ]
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2019-08-14
    • 2019-06-22
    • 2019-06-15
    相关资源
    最近更新 更多