Javascript 如何通过Ember中的脚本标记提供第三方js库?

Javascript 如何通过Ember中的脚本标记提供第三方js库?,javascript,ember.js,configuration,plaid,Javascript,Ember.js,Configuration,Plaid,我正在尝试将Plaid与Ember应用程序集成,并按照他们网站上的说明进行操作。它应该很简单,说明书上说只需添加 它将为您提供一个Plaid类,可用于与Plaid接口 这很好,但理想情况下,我希望提供此脚本,并将其导入到一个服务中,在该服务中我可以对其进行操作。这不是开箱即用的。不幸的是,此脚本依赖于嵌入脚本标记。如果您取消对它的整合,那么会有一行代码,它会非常明确地尝试查找嵌入它的脚本标记,如果找不到它,它会抛出一个错误 从未统一的代码: findScriptTag: function()

我正在尝试将Plaid与Ember应用程序集成,并按照他们网站上的说明进行操作。它应该很简单,说明书上说只需添加


它将为您提供一个
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")
findScriptTag:function(){
对于(var t=document.getElementsByTagName(“脚本”),n=0,e=t.length;n
我的问题是,我可以将ember配置为在其自己的脚本标记中分别加载某些供应商的脚本吗?我还需要控制文件的名称,因为上面要求名称为link-initialize.js。或者有其他方法解决这个问题吗

我目前的解决方法是只将脚本标记添加到index.html,但我真的希望能够说
从“Plaid”导入Plaid;
,或者类似的东西……没有这个,单元测试是不可能的


澄清一下:据我所知,没有适用于此的npm包。
是一个后端库,不处理在页面上嵌入Plaid。它与Plaid文档说要嵌入的link-initialize.js脚本完全不同。

您应该能够用它实现这一点


然后,您应该能够从npm安装,并将其导入到您的ember应用程序中需要的任何位置。

您可以将其放入
public
文件夹中。这将确保
ember cli
将其以1:1的比例复制到生成输出中。然后添加脚本标记,如
到您的
index.html
,它应该可以工作

如果您坚持将文件保存在
vendor
文件夹中,您可以在
ember cli build.js
中使用brocoli
Funnel
MergeTrees
将其复制到
dist
文件夹中,并使用相同的脚本标记


关于进口:
您可以创建一个
vendor shim
。只需执行
ember生成vendor shim plain
。在vendor shim中,只需返回由
link initialize.js
提供的全局变量。然后您就可以
import
这个。

这将使您远离ember的常规路线。您可以改用吗?我知道。:)和不,这是一个用于处理其api的库,应该由服务器运行。您可以看到,它的安装程序需要一个密钥。无论如何,我已经在rails后端正确地完成了这方面的工作。我的问题是严格地在前端加载脚本。根据我对@jrjohnson的响应,该库并没有实现我想要的功能我试图导入的内容没有包含在包中,因为该包只处理与Plaid API的接口。我没有找到任何加载链接初始化脚本的npm包,因此我尝试提供该脚本。如果您找到了,我很乐意接受。我明白了。那么公用文件夹应该对您非常有用。感谢您的帮助花点时间进一步解释。就是这样。不想把它公之于众,感觉真的很傻/。正在深入研究供应商垫片,这绝对是正确的做法。谢谢你的帮助!