Javascript 当我需要一个文件夹而这似乎不可能时,如何使用require安装SDK?
问题描述。 我正在尝试安装Facebook的Javascript SDK在任何对象之前,我绝对知道compact版本(),但该API对我来说绝对无用。我需要一个由卢卡斯·科斯塔制作的,以便能够对我的广告帐户进行更改,这是Facebook推荐的脚本无法启用的 像往常一样,安装说明(参见github.com/lucasosta/facebook js ads sdk)都是基于我所不知道的神秘条件。我无法让SDK正常工作,希望有人明确告诉我该做什么。问题的关键是矛盾的情况:我应该使用Javascript 当我需要一个文件夹而这似乎不可能时,如何使用require安装SDK?,javascript,facebook-graph-api,installation,requirejs,facebook-javascript-sdk,Javascript,Facebook Graph Api,Installation,Requirejs,Facebook Javascript Sdk,问题描述。 我正在尝试安装Facebook的Javascript SDK在任何对象之前,我绝对知道compact版本(),但该API对我来说绝对无用。我需要一个由卢卡斯·科斯塔制作的,以便能够对我的广告帐户进行更改,这是Facebook推荐的脚本无法启用的 像往常一样,安装说明(参见github.com/lucasosta/facebook js ads sdk)都是基于我所不知道的神秘条件。我无法让SDK正常工作,希望有人明确告诉我该做什么。问题的关键是矛盾的情况:我应该使用require(“
require(“…”)
命令(where??)来包含SDK(应该保存在哪里??),但require不能用于文件夹,而是用于脚本。可能在某个地方有一个require.config
文件,我应该设置它,但我不知道,正如我所说的,这些说明完全没有提到必要的启动条件
以下是我迄今为止所做的工作。我的文件夹结构是这样的(我甚至不知道这是否正确,因为没有人在任何地方解释它!):
在index.php
中,我有一块html,后面跟着一些javascript。正是在这里,我尝试从中插入设置/示例代码。浏览器甚至无法通过行const adsSdk=require('facebook-ads-sdk')代码>。我尝试了很多方法:require('./facebook-ads-sdk')
,将所有这些内容移动到脚本main.js
中的文件夹/js/app
,然后在index.php
中写入我的html,其中main
和require
位于该文件夹中。设置require.config
(或requirejs.config
)用requirejs
等替换require
,并在index.php
的
部分包含适当的脚本。没什么帮助。以下是错误:首先是constadssdk=require('facebook-ads-sdk')代码>我明白了
Error: Module name "facebook-ads-sdk" has not been loaded yet for context: _. Use require([])
好的。如何“为上下文加载模块”??阅读requirejs.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 Ads SDK:
通过npm安装进行安装——保存facebook ads sdk
npm module Lucas Costa的facebook ads sdk副本
将此文件夹复制到网站的体系结构(实际上,您可能只需要一个子文件夹/文件)
在HTML中包含脚本(通过
),src指向facebook ads sdk文件夹中的文件:/dist/iife.js
在页面的脚本中,您现在可以通过全局变量fb
访问then API
除第3条外:
3'。在HTML标题中,确保通过
-标记包含require.js
脚本。然后在网站的javascript中,在任何位置应用以下命令:
require.config({
paths: {
'sdk': './[FOLDERNAME OF SDK]/dist/iife',
}
});
require(['sdk']);
感谢@SLaks和@KhauriMcClain(如果可以的话,我会给你加分)。你需要改变你的使用方式
如果以前未加载依赖项,则不能使用synchronous require方法加载依赖项。因此const adsSdk=require('facebook-ads-sdk')代码>将不起作用。您需要使用表单require(['name-of-script'],callback)
Require不允许您加载整个文件夹。您必须找到您正试图使用的确切脚本,因此var adsSdk=require(['sdk'])代码>将不起作用
最终,您的代码应该如下所示:
require(['some-facebook-script'],函数(someFacebookScript){
//在这里做些工作
});代码>
传递给回调函数的参数将是您尝试使用的已加载模块。当使用异步版本时(正如我刚才演示的),从require返回是没有用的。说明假定您使用的是像Webpack或Browserify这样的捆绑系统。
如果是,说明“只要工作”;你可以require()
it,一切都会好起来的
如果您正在构建一个非平凡的代码库,那么您真的应该使用这样一个系统
如果没有,您可以在
标记中引用iife.js
,这将创建全局变量。您是在浏览器中运行还是在NodeJS中运行?您是否在浏览器上使用npm。试过了,有没有npm的本地副本。我应该如何在整个文件夹上使用require?您应该以加载其余代码的相同方式加载它,如第一段所述:ECMAScript 5捆绑的带sourcemaps的小型发行版也可以作为AMD和CommonJS模块,作为IIFE(在fb变量下)使用,如果您需要,也可以作为UMD使用,甚至作为浏览器的全局浏览器。
@
require.config({
paths: {
'sdk': './[FOLDERNAME OF SDK]/dist/iife',
}
});
require(['sdk']);