将第三方模块导入Ember

时间:2016-06-10 12:08:02

标签: javascript ember.js ember-cli js-amd

我正在尝试将此模块导入Ember.js(版本2.5 )应用:

https://github.com/hapijs/nes/blob/master/lib/client.js

我正是这样做的(docs之后):

app.import('bower_components/nes/lib/client.js', { exports: { 'nes': ['default', 'client'] } });

进口申报单:

import client from 'nes';

现在我一直收到以下错误:

  

loader.js:201 Uncaught Error:找不到导入的模块nes   来自myapp.com/components/chart-widget

我假设import语句是正确的,并且实际模块不会以Ember可以使用它的方式导出自身。但是,我该如何解决呢?有没有办法围绕第三方库编写一个包装器?

1 个答案:

答案 0 :(得分:2)

TL:DR您的模块可以作为nes.Client的全局变量访问。

您正在查看指南中的错误部分。 hapijs/nes不是标准的AMD资产,因此无法使用import关键字直接导入。这意味着您的库可以在全局环境中找到。

通过bower_components/nes/lib/client.js进行调试会显示代码在这种情况下是分支的:https://github.com/hapijs/nes/blob/master/lib/client.js#L24

您只需通过名为nes.Client的全局变量访问您的第三方模块。

如果您想要使用ES6 import关键字进行访问以获得更清晰的信息,则可以按照指南中的说明生成供应商填充程序:https://ember-cli.com/user-guide/#managing-dependencies

请注意,这不会从全局上下文中删除nes,只允许您使用import关键字将其导入。