代码之家  ›  专栏  ›  技术社区  ›  Thomas

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

  •  0
  • Thomas  · 技术社区  · 7 年前

    我试着跟着 https://github.com/lucascosta/facebook-js-ads-sdk 安装Facebook的Javascript SDK。 在任何人反对之前 ,我绝对知道紧凑版( https://developers.facebook.com/docs/javascript/quickstart

    像往常一样,安装说明(请参阅github.com/lucascosta/facebook-js-ads-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 const adsSdk = require('facebook-ads-sdk'); .我尝试了很多事情: require('./facebook-ads-sdk'); ./js/app 在脚本中 main.js 然后在我的html中写入 index.php 哪里 main require 位于。设置 requirejs.config )更换 要求 requirejs ,并在 <head> 部分 .没有任何帮助。以下是错误:首先是 我明白了

    Error: Module name "facebook-ads-sdk" has not been loaded yet for context: _. Use require([])
    

    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


    更新:解决方案。 对于任何未来的谷歌搜索同样的问题:通过以下简单的方法,一个人可以安装&嵌入Javascript FB Ads SDK:

    1. 通过安装 npm install --save facebook-ads-sdk npm modul Lucas Costas facebook广告SDK的副本。
    2. 将此文件夹复制到您的网站架构(实际上您可能只需要一个子文件夹/文件)。
    3. 在HTML中包含脚本(通过 <script type='text/javascript' src='...'></script> /dist/iife.js
    4. fb

    3.在HTML标题中,确保包含 require.js <script> -标签。然后在您的网站中,javascript在任何地方应用以下命令:

    require.config({
        paths: {
            'sdk': './[FOLDERNAME OF SDK]/dist/iife',
        }
    });
    require(['sdk']);
    

    特别感谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   SLaks    7 年前

    这些说明假设您正在使用像Webpack或Browserify这样的捆绑系统。
    require() 一切都会好起来的。

    如果您正在构建一个非常重要的代码库,那么您真的应该使用这样的系统。

    iife.js 在一个 <script> 标记,这将创建全局变量。

        2
  •  0
  •   Nathan Montez    7 年前

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

    1. 如果以前没有加载依赖项,则不能使用synchronous require方法加载依赖项。因此 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返回是没有用的。