gpt4 book ai didi

ember.js - ./vendor 目录中具有命名导出的 ES6 库

转载 作者:行者123 更新时间:2023-12-02 06:07:55 25 4
gpt4 key购买 nike

Ember 2.0/ember-cli 1.13.8

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

  • 简单的import {Socket} from 'vendor/phoenix'在我的 Controller 中不会将 lib 转换为 ES5


  • app.import('vendor/phoenix.js', {exports: {phoenix: ['Socket']}})在我的ember-cli-build.js也不会将 lib 转换为 ES5。


  • 我也试过
    https://stackoverflow.com/a/29659509/255633 --
  • 由于命名导出,无法使其工作。 ( Error: Entry module can only have named exports in strict mode (pass ``strict: true``)
  • 当我只是修改库以使用 default export错误消失了,但库无法导入。看起来 Broccoli 没有将 lib 合并到树中。

  • 这是我的 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 通过转译器运行该文件,因此您只需在 Controller 中进行导入即可。问题是 ember 需要将文件放在 app 文件夹中才能导入它。

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

    app/phoenixjs

    然后在你的 Controller 中:
    import phoenix from 'PROJECTNAME/phoenixjs/phoenix

    然后您可以在该文件中的任何位置使用 phoenix 对象。

    工作证明:

    Chrome Debug Tools Proof

    编辑

    能够使用命名导入
    import {Socket} from 'import-test-app/extends/phoenix';
    import Ember from 'ember';

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

    在模板测试中是“Socket”

    关于ember.js - ./vendor 目录中具有命名导出的 ES6 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32588946/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com