【问题标题】:Import jquery with ember-cli使用 ember-cli 导入 jquery
【发布时间】:2014-08-02 13:04:53
【问题描述】:

由于 ember-cli 0.0.34 jquery 已按预定义从 .jshint 文件中删除。 所以需要导入jquery,但是导入时出现如下错误:

import $ from 'jquery';

我得到的错误是:

ENOENT, no such file or directory 'S:\...\tmp\tree_merger-tmp_dest_dir-Nb27WzDk.tmp\jquery.js'
Error: ENOENT, no such file or directory 'S:\...\tmp\tree_merger-tmp_dest_dir-Nb27WzDk.tmp\jquery.js'
    at Object.fs.statSync (fs.js:684:18)
    at addModule (S:\...\node_modules\ember-cli\node_modules\broccoli-es6-concatenator\index.js:81:46)
    .....

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    确保您已在使用的应用程序/插件的package.json 内的dependencies 中列出@ember/jquery。它可能看起来像这样:

    "@ember/jquery": "^1.1.0"
    

    那你可以继续使用jquery in the recommended way

    import $ from 'jquery';
    

    【讨论】:

      【解决方案2】:

      较新版本的 Ember/Ember-CLI 允许解构,从而更容易导入库。

      import Ember from 'ember';
      const { $, get, set } = Ember;
      

      会引入 jquery、getter 和 setter。

      【讨论】:

        【解决方案3】:

        我通过将此代码添加到我的 JS 文件中解决了这个问题

        从'ember'导入jQuery;

        【讨论】:

          【解决方案4】:

          $ 在渲染/实例化后变为可用,就像 jQuery 的常用用法一样。

          如果需要使用 jQuery,否则需要 Ember 前缀。

          Handlebars 也可以作为 Ember.Handlebars 使用,尽管是 Ember 扩展版本。

          【讨论】:

          • 我不确定这是否曾经是真的,但在 Ember 1.12 中它不是真的。
          • 哈!是的。考虑到这篇文章的年龄,这是 0.7 或 0.8。
          【解决方案5】:

          我完全不导入 jquery 解决了这个问题。 jQuery 可通过 Ember.$ (link) 获得

          所以我将代码更改为使用Ember.$(...) 而不是$(...)

          【讨论】:

          • 当我尝试这样做时,我收到一条错误消息,提示 Ember.$(...) not defined :( 有什么想法吗?
          • @thecodethinker:确保在文件顶部包含 import Ember from 'ember'; 并使用最新的 ember-cli 版本。
          • 为避免更改文件中$ 的每个实例,您只需将var $ = Em.$; 放在import Em from 'ember'; 下方即可
          • 我和@DuncanWalker 一起去了,但是:var $ = Ember.$; 在'import Em from 'ember'下;'耶。
          • 如何导入包含在brocfile中的jqueryui?
          【解决方案6】:

          在将ember-cli 更新为 0.0.34 后,我遇到了同样的问题。虽然我仍然可以在我的代码中使用$ (jQuery),但 JSHint 一直抛出错误:

          project/views/blah.js: line 6, col 9, '$' is not defined.

          您可以编辑您的.jshintrc 并将$ 添加回predef

          {
            "predef": {
              // ...
              "$": true,
              // ...
            },
            // ...
          }
          

          肯定会更喜欢使用import 的方法。

          不确定这是否有任何帮助,但我能够在构建期间使用下面的行找到该文件,但它在浏览器中引起了一些问题:

          import $ from 'vendor/jquery/dist/jquery';

          【讨论】:

          • 是的,这确实有效。但是 jquery 将被传输两次:一次在您的 cendor.js 中,一次打包到您的 application-name-compiled-file.js 中。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多