我有一个对象 ,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 加载模块?我真的不知道...
更新:我发现一件事可能会剥离加载的模块
使用此任务来读取和转换您的 HTML 文档。典型用例包括:
- 从您的脚本或链接标签中读取引用并将它们自动传递给 concat、uglify 等。
2. 更新 HTML 以删除脚本引用或任何不适用于您的生产构建的内容。
- 出于任何原因添加、更新或删除任何 DOM 元素。
dom_munger
是我的应用程序构建过程的一部分,它在部署时发生(!)。Grunt 可能是这里的罪魁祸首。
有人知道如何加载上面的脚本标签,而 dom_munger 仍然是我的应用程序的 grunt 构建步骤的一部分吗?