我正在尝试将Plaid与一个Ember应用程序集成,并按照他们网站上的说明进行操作。
<script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js" />
它将为您提供一个Plaid
类,可用于与Plaid接口。
这样做很好,但理想情况下,我希望提供此脚本并将其导入到一个服务中,这样我就可以对它进行操作。这不是现成的。不幸的是,此脚本 * 依赖于嵌入脚本标记。* 如果您将其缩小,则会有一行非常明确地尝试查找嵌入它的脚本标记,如果找不到,则会抛出错误。
从未缩小的代码:
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在它自己的script标签中单独加载某些vendored脚本吗?我还需要控制文件的名称,因为上面的命令要求名称为link-initialize.js。或者有其他方法可以解决这个问题吗?
我目前的解决方法是将script标记添加到index.html中,但是我真的希望能够说import Plaid from 'plaid';
,或者类似的东西...没有这个标记,单元测试是不可能的。
澄清一下:据我所知,没有npm软件包。https://www.npmjs.com/package/plaid是一个后端库,不处理在页面上嵌入Plaid。它与plaid文档所说要嵌入的link-initialize.js脚本完全不同。
2条答案
按热度按时间eh57zj3b1#
你可以把它放在
public
文件夹中,这样可以确保ember-cli
将它1:1复制到你的构建输出中,然后在你的index.html
中添加像<script src="/link-initialize.js" />
这样的脚本标签,这样就可以工作了。如果您坚持将文件保存在
vendor
文件夹中,您可以在ember-cli-build.js
中使用broccoliFunnel
和MergeTrees
将其复制到dist
文件夹中,并使用相同的脚本标记。关于导入:你可以创建一个
vendor-shim
。只需要执行ember generate vendor-shim plain
。在供应商填充程序中,只需要返回link-initialize.js
提供的全局变量。然后你可以执行import
。7dl7o3gd2#
您应该能够使用ember-auto-import实现这一点。
然后,您应该能够从npm安装Plaid,并将其导入到ember应用程序中需要它的任何地方。