【问题标题】:Import 3rd party module into Ember将 3rd 方模块导入 Ember
【发布时间】:2016-10-11 09:39:55
【问题描述】:

我正在尝试将此模块导入 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 未捕获错误:找不到模块 nes 导入 来自myapp.com/components/chart-widget

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

【问题讨论】:

  • 您可以将component/chart-widget 中的行粘贴到您实际导入模块的位置吗?
  • 请查看更新后的问题。我也尝试过像 import { client } from 'nes' 和 import nes from 'nes' 之类的导入,但并没有真正奏效......

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多