问题描述.--我正试图跟随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文件,我应该设置,但我不知道,就像我说的,指令完全绕过了任何必要的启动条件。
以下是我迄今所做的工作。我的文件夹结构看起来像这样(我甚至不知道这是否正确,因为没有人在任何地方解释它!):
[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文件夹中,然后在main和require所在的index.php中用html编写。设置一个require.config (或requirejs.config),以requirejs等代替require,并在index.php的<head>部分中包含适当的脚本。什么都帮不上忙。以下是错误:首先,使用const adsSdk = require('facebook-ads-sdk');,我得到
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脚本中使用以下命令
require.config({
shim: {
'facebook': {
exports: 'adsSdk',
},
},
paths: {
'sdk': './facebook-ads-sdk',
}
});
var adsSdk = require(['sdk']);那么我就得到了错误
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:
npm install --save facebook-ads-sdk安装一个npm模块的副本卢卡斯科斯塔的facebook-ads SDK。/dist/iife.js. ),src指向facebook-ads文件夹中的文件:<script type='text/javascript' src='...'></script>。fb.访问API或者改为3:
3‘。在headers中,确保通过一个require.js -tag包含<script>脚本。然后,在网站的javascript中,在任何地方应用以下命令:
require.config({
paths: {
'sdk': './[FOLDERNAME OF SDK]/dist/iife',
}
});
require(['sdk']);对于这个解决方案,我向@SLaks、和(如果可能的话我会给你加分)表示特别的感谢。
发布于 2017-07-11 20:23:18
这些说明假设您使用的是像Webpack或Browserify这样的捆绑系统。
如果是的话,说明“只需工作”;您可以require()它,一切都会很好。
如果您正在构建一个非平凡的代码库,那么您确实应该使用这样一个系统。
如果不是,您可以在一个iife.js标记中引用<script>,这将创建全局变量。
发布于 2017-07-11 14:25:22
您需要改变使用require的方式。
const adsSdk = require('facebook-ads-sdk');将无法工作。您将需要使用表单require(['name-of-script'], callback)。var adsSdk = require(['sdk']);就不能工作了。最终,您的代码应该如下所示:
require(['some-facebook-script'], function(someFacebookScript) { // Do some work here });
传递给回调函数的参数将是要使用的加载模块。在使用异步版本时(正如我刚才所演示的),require的返回是没有用的。
https://stackoverflow.com/questions/45037040
复制相似问题