我正在尝试将Plaid与Ember应用程序集成,并按照他们网站上的说明进行操作。应该很简单,说明书上说只添加
<script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js" />
它将为您提供一个可用于与Plaid接口的CCD_ 1类。
这很好,但理想情况下,我想提供这个脚本,并将其导入到一个我可以对其进行操作的服务中。这不是开箱即用的。不幸的是,此脚本依赖于嵌入脚本标记如果你取消了这个东西,有一行它非常明确地试图找到嵌入它的脚本标记,如果找不到它就会抛出一个错误。
来自未经优化的代码:
findScriptTag: function() {
for (var t = document.getElementsByTagName("script"), n = 0, e = t.length; n < e; n += 1)
if (/link-initialize(..*?)?.js$/.test(t[n].src)) return t[n];
throw new Error("Failed to find script")
我的问题是,我可以将ember配置为在其自己的脚本标记中与其他脚本分开加载某些vendored脚本吗?我还需要控制文件的名称,因为上面要求名称为link-initialize.js。或者有其他方法可以解决这个问题吗?
我目前的解决方法是将script标记添加到index.html,但我真的希望能够说import Plaid from 'plaid';
,或者类似的东西。。。没有这个单元测试是不可能的。
澄清:据我所知,没有适用于此的npm包。https://www.npmjs.com/package/plaid是不处理在页面上嵌入Plaid的后端库。它与plaid文档所说的嵌入的link-initialize.js脚本完全不同。
您可以将其放在public
文件夹中。这将确保ember-cli
将它以1:1的比例复制到您的构建输出中。然后添加脚本标记,如<script src="/link-initialize.js" />
到您的index.html
,它应该可以工作。
如果您坚持将文件保存在vendor
文件夹中,则可以使用Plaid
0中的西兰花Funnel
和MergeTrees
将其复制到dist
文件夹中,并使用相同的脚本标记。
关于导入:您可以创建vendor-shim
。只需执行ember generate vendor-shim plain
。在供应商填充程序中,只需返回link-initialize.js
提供的全局变量。然后你可以import
这个。
您应该能够通过ember自动导入来实现这一点。
然后你应该能够从npm安装Plaid,并将其导入到你的ember应用程序中任何需要的地方。