[英]how do I install an SDK using require, when I need to require an folder and this seems impossible?
問題描述。 我正在嘗試遵循https://github.com/lucascosta/facebook-js-ads-sdk安裝適用於Facebook的Javascript SDK。 在任何人反對之前 ,我絕對知道精簡版( https://developers.facebook.com/docs/javascript/quickstart ),但是該API對我絕對沒有用。 我需要盧卡斯·科斯塔(Lucas Costa)生產的那個,以便能夠更改我的廣告帳戶,而Facebook推薦的腳本未啟用該帳戶。
像往常一樣,安裝說明(請參閱github.com/lucascosta/facebook-js-ads-sdk)是在未知條件下可怕地斷言的,這對我來說是未知的。 我無法使SDK正常運行,並且希望有人明確告訴我該怎么做 。 問題的症結在於自相矛盾的情況:我應該使用require('...')
命令(where ??)來包含SDK(應該保存在哪里?),而require 不能被包含用於文件夾,但用於腳本。 也許應該在某個地方設置了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');
,將所有內容./js/app
腳本main.js
的文件夾./js/app
中,然后在main
和require
所在的index.php
main.js
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([])
好的。 我如何“為上下文_加載模塊”? 在這里閱讀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)
即 ,瀏覽器認為我正在嘗試包括腳本facebook-ads-sdk.js
,但是我應該(???)“需要”整個文件夾! 到底是怎么回事? 為了使此SDK正常運行,有人可以給我有關必要文件夾結構和命令的詳盡說明嗎?
為什么在網上如此模糊地描述這一點? 是否存在某種“所有人”都知道但從未提及的安裝SDK的神秘方式?
更新:解決方案。 對於以后針對相同問題的任何Google搜索:通過以下簡單方法,可以安裝並嵌入Javascript-FB-Ads-SDK:
npm install --save facebook-ads-sdk
,以Lucas Costa的facebook-ads SDK調制npm。 <script type='text/javascript' src='...'></script>
),其中src指向facebook-ads-sdk文件夾中的文件: /dist/iife.js
。 fb
訪問API。 替代3:
3'。 在HTML標頭中,請確保通過<script>
-tag包含require.js
腳本。 然后在您網站的javascript中將以下命令應用於任何地方:
require.config({
paths: {
'sdk': './[FOLDERNAME OF SDK]/dist/iife',
}
});
require(['sdk']);
感謝和感謝@SLaks和@KhauriMcClain (如果可以的話,我會給您一點積分)來解決此問題。
您需要更改使用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的返回沒有用。
這些說明假設您使用的是捆綁系統,例如Webpack或Browserify。
如果是的話,說明“行之有效”; 您可以require()
它,一切都會正常。
如果您要構建一個重要的代碼庫,那么您確實應該使用這樣的系統。
如果不是,則可以在<script>
標記中引用iife.js
,這將創建全局變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.