首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我需要一个文件夹而这似乎是不可能的时候,我如何使用require安装SDK呢?

当我需要一个文件夹而这似乎是不可能的时候,我如何使用require安装SDK呢?
EN

Stack Overflow用户
提问于 2017-07-11 14:13:25
回答 2查看 105关注 0票数 0

问题描述.--我正试图跟随https://github.com/lucascosta/facebook-js-ads-sdk来为Facebook安装Javascript。在任何人反对之前,我绝对知道紧凑的版本(https://developers.facebook.com/docs/javascript/quickstart),但是这个API对我来说是毫无用处的。我需要卢卡斯科斯塔制作的,以便能够修改我的广告帐户,这是Facebook推荐的脚本不允许的。

和往常一样,安装说明(请参阅github.com/lucascosta/facebook)是以神秘的情况为基础的,我不知道。我无法让SDK工作,希望有人明确地告诉我要做什么。问题的症结在于矛盾的情况:我应该使用require('...')命令(哪里??)要包含SDK (应该在哪里保存它?)但是,要求不能在文件夹上使用,只能在脚本上使用。也许在某个地方有一个require.config文件,我应该设置,但我不知道,就像我说的,指令完全绕过了任何必要的启动条件。

以下是我迄今所做的工作。我的文件夹结构看起来像这样(我甚至不知道这是否正确,因为没有人在任何地方解释它!):

代码语言:javascript
复制
[Serverroot]
  — [folder with my website]
      – facebook-ads-sdk (the folder one gets by downloading)
      – css — pagestyles.css
      – js — lib
              require.js
           — app
              ( some header scripts )
      – img
              ( some images )
      index.php

index.php中,我有一个html块,后面跟着一些javascript。在这里,我尝试插入安装程序/示例代码。浏览器甚至无法通过行const adsSdk = require('facebook-ads-sdk');。我尝试了许多事情:require('./facebook-ads-sdk');,将所有这些移到脚本main.js中的./js/app文件夹中,然后在mainrequire所在的index.php中用html编写。设置一个require.config (或requirejs.config),以requirejs等代替require,并在index.php<head>部分中包含适当的脚本。什么都帮不上忙。以下是错误:首先,使用const adsSdk = require('facebook-ads-sdk');,我得到

代码语言:javascript
复制
Error: Module name "facebook-ads-sdk" has not been loaded yet for context: _. Use require([])

好吧。如何“为上下文加载模块”??阅读requjs.org/docs/start.html在这里没有帮助。我尝试过require([], function() {require('facebook-ads-sdk')});同样的错误。我试过require(['facebook-ads-sdk']);

我尝试在index.php脚本中使用以下命令

代码语言:javascript
复制
require.config({
    shim: {
        'facebook': {
            exports: 'adsSdk',
        },
    },
    paths: {
        'sdk': './facebook-ads-sdk',
    }
});
var adsSdk = require(['sdk']);

那么我就得到了错误

代码语言:javascript
复制
Failed to load resource: http:// .... /facebook-ads-sdk.js the server responded with a status of 404 (Not Found)

Ie,浏览器认为我试图包含一个脚本facebook-ads-sdk.js,但我应该(?)“要求”整个文件夹!怎么回事?能不能有人给我详细的说明一下必要的文件夹结构和命令,以便让SDK正常工作?

为什么这会在网上如此令人愤怒地模糊描述呢?有没有一种神秘的安装SDK的方法,每个人都知道,但从来没有提到过?

更新:任何未来谷歌的解决方案.-搜索同样的问题:通过以下简单的方法,可以安装和嵌入Javascript-FB:

  1. 通过npm install --save facebook-ads-sdk安装一个npm模块的副本卢卡斯科斯塔的facebook-ads SDK。
  2. 将此文件夹复制到您的网站架构中(实际上,您可能只需要一个子文件夹/文件)。
  3. 在HTML中包括脚本(通过/dist/iife.js. ),src指向facebook-ads文件夹中的文件:<script type='text/javascript' src='...'></script>
  4. 在您的页面脚本中,您现在可以通过全局变量fb.访问API

或者改为3:

3‘。在headers中,确保通过一个require.js -tag包含<script>脚本。然后,在网站的javascript中,在任何地方应用以下命令:

代码语言:javascript
复制
require.config({
    paths: {
        'sdk': './[FOLDERNAME OF SDK]/dist/iife',
    }
});
require(['sdk']);

对于这个解决方案,我向@SLaks、(如果可能的话我会给你加分)表示特别的感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-11 20:23:18

这些说明假设您使用的是像Webpack或Browserify这样的捆绑系统。

如果是的话,说明“只需工作”;您可以require()它,一切都会很好。

如果您正在构建一个非平凡的代码库,那么您确实应该使用这样一个系统。

如果不是,您可以在一个iife.js标记中引用<script>,这将创建全局变量。

票数 0
EN

Stack Overflow用户

发布于 2017-07-11 14:25:22

您需要改变使用require的方式。

  1. 如果以前没有加载依赖项,则不能使用同步要求方法加载依赖项。因此,const adsSdk = require('facebook-ads-sdk');将无法工作。您将需要使用表单require(['name-of-script'], callback)
  2. 要求不允许加载整个文件夹。您必须找到要使用的确切脚本,这样var adsSdk = require(['sdk']);就不能工作了。

最终,您的代码应该如下所示:

require(['some-facebook-script'], function(someFacebookScript) { // Do some work here });

传递给回调函数的参数将是要使用的加载模块。在使用异步版本时(正如我刚才所演示的),require的返回是没有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45037040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档