1

我有一个对象 ,Plaid它由Plaid的一个插入模块提供,称为Plaid Link。在本地,代码在我的 AngularJS 前端中完美运行。

该模块是通过我的 AngularJS 应用程序的 index.html 文件加载的,就在为我的应用程序加载的所有其他脚本标签旁边。

索引.html

<script src="https://cdn.plaid.com/link/stable/link-initialize.js"></script>

这是Plaid调用的代码:( 来自 AngularJS 控制器)

$scope.addAccount = function(bankChosen) {

    $log.debug("Plaid object: ", Plaid);
    var linkHandler = Plaid.create({ // the troublesome line 
        env: 'tartan',
        clientName: 'Example Project',
        key: 'test_key',
        product: 'connect',
        onSuccess: function(public_token) {
            Restangular.one('plaid').customPOST(
                {
                    public_token: public_token,
                    user_id: $scope.currentUser.id,
                    institution_code: bankChosen
                },
                'addAccount'
            );
        },
        onExit: function() {
            $state.go('dashboard.successState');
        },
    });

    linkHandler.open(bankChosen);

};

但是,当我推送到当前托管在 Heroku 上的生产环境时,它给出了 javascript 错误ReferenceError: Plaid is not defined尝试加载时给出 javascript 错误。部署到生产环境时出现重大错误。

什么可能导致该模块在生产期间不可用?

加载 CDN 的脚本可能会被执行此类操作的标准 grunt 任务剥离?或者也许我应该在生产环境设置中以其他方式从 CDN 加载模块?我真的不知道...

更新:我发现一件事可能会剥离加载的模块

来自Grunt dom-munger 文档

使用此任务来读取和转换您的 HTML 文档。典型用例包括:

  1. 从您的脚本或链接标签中读取引用并将它们自动传递给 concat、uglify 等。

2. 更新 HTML 以删除脚本引用或任何不适用于您的生产构建的内容。

  1. 出于任何原因添加、更新或删除任何 DOM 元素。

dom_munger是我的应用程序构建过程的一部分,它在部署时发生(!)。Grunt 可能是这里的罪魁祸首。

有人知道如何加载上面的脚本标签,而 dom_munger 仍然是我的应用程序的 grunt 构建步骤的一部分吗?

4

1 回答 1

2

问题在于,在构建步骤中,Grunt 剥离了我的应用程序中的脚本标签。所以我不得不使用's update --> options --> append 选项append将标签重新添加到我的 body 标签上。dom_munger

...只有在使用grunt build.

该行在我的 Gruntfile 中看起来像这样。

--> The key added line is this one
{selector:'body',html:'<script src="https://cdn.plaid.com/link/stable/link-initialize.js"></script>'},


dom_munger:{
    [.....]
  update: {
    options: {
      append: [
        {selector:'body',html:'<script src="https://cdn.plaid.com/link/stable/link-initialize.js"></script>'},
      ]
    },
    src:'index.html',
    dest: 'dist/index.html'
  }

对我来说相当神秘的错误。我希望这可以在某个时候帮助其他人!

于 2015-09-02T03:00:31.293 回答