将第 3 方模块导入 Ember

Import 3rd party module into Ember

我正在尝试将此模块导入 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: Could not find module nes imported from myapp.com/components/chart-widget

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

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 关键字导入它。