Ember.js 在./vendor dir中具有命名导出的ES6 lib

Ember.js 在./vendor dir中具有命名导出的ES6 lib,ember.js,Ember.js,Ember 2.0/Ember cli 1.13.8 在我的Ember 2.0项目中,我找不到从位于./vendor dir中的ES6模块导入名称导出的方法 简单的 在我的控制器中从“vendor/phoenix”导入{Socket}不会将库传输到ES5中 app.import('vendor/phoenix.js',{exports:{phoenix:['Socket']}})在我的ember cli build.js中也不会将库传输到ES5中 我也试过了 -- 由于命名导出,

Ember 2.0/Ember cli 1.13.8

在我的Ember 2.0项目中,我找不到从位于./vendor dir中的ES6模块导入名称导出的方法

  • 简单的
    在我的控制器中从“vendor/phoenix”导入{Socket}
    不会将库传输到ES5中

  • app.import('vendor/phoenix.js',{exports:{phoenix:['Socket']}})
    在我的
    ember cli build.js
    中也不会将库传输到ES5中

  • 我也试过了 --
  • 由于命名导出,无法使其工作。(
    错误:输入模块只能在严格模式下有命名导出(pass``strict:true`)
  • 当我刚刚修改库以使用
    默认导出
    时,错误消失了,但库不可用于导入。看起来西兰花没有将库合并到树中
这是我的
ember cli build.js

  var tree = './vendor';
  var amdFiles = new ES6Modules(tree, {
    format: 'amd',
    bundleOptions: {
      entry: 'phoenix.js',
      name: 'phoenix'
    }
  });

  return mergeTrees([app.toTree(), amdFiles]);

当您将ES6文件导入到ember应用程序时,您需要让ember通过transpiler运行该文件,以便执行此操作,您只需在控制器中执行导入。问题是ember需要将该文件保存在应用程序文件夹中,以便能够导入该文件

因此,将JavaScript文件放在app文件夹中,例如:

app/phoenixjs
然后在控制器中:

import phoenix from 'PROJECTNAME/phoenixjs/phoenix
然后可以在该文件中的任何位置使用phoenix对象

工作证明:

编辑

能够通过使用命名导入

import {Socket} from 'import-test-app/extends/phoenix';
import Ember from 'ember';

export default Ember.Controller.extend({
  test:Socket.name
});

模板中的测试是“Socket”

你能指出你使用的是哪一个库吗?它可能无法正确导出。我正在尝试使用looks find to me…我将尝试制作一个简单的应用程序,看看a是否可以导入或生成相同的应用程序issue@TBourque非常感谢!我花了几个小时寻找解决方案..好的,我相信我已经解决了问题..发布答案否wYeah,你完全正确。唯一的问题是我仍然不能做
命名
导入。只有
默认
。它工作了,但只有我修改了库,将所有
命名
导入合并成一个大的
默认
导入。我能够像这样进行命名导入:导入{Socket}从“导入测试应用程序/extends/phoenix”中;嘿,你完全正确!我想我的问题是我将
phoenix.js
放入了
utils
,这是由Ember resolver获取的。非常感谢!