2

使用 Ember-CLI 并运行 ember 服务器时,我从 JSLint 收到以下错误:

[app_path]/filename.js: line 1, col 16, 'Ember' is not defined.

添加import Ember from 'ember';修复此问题。

这是现在处理我所有文件的官方方式吗?该文档尚未提及此更改。

4

2 回答 2

7

编辑

从斯蒂芬彭纳:

我们明确将其 [Ember] 排除在 [.jshintrc 文件] 之外,请改为导入 ember。

我们计划将越来越多的 ember 暴露为 es6,有一天这将允许工具移除您不使用的部分 ember。导致更小的构建。

尽管如此,在那个日期之前,它可能会为您省去很多麻烦.jshintrc

过时的答案

在您的.jshintrc文件(或tests/.jshintrc)中,将您不想在每个模块中定义的全局命名空间中的任何内容添加到 predef 对象。例如:

{
  "predef": {
    "document": true,
    "window": true,
    "SprintStatusENV": true,
    "Ember": true, // Added
    "$": true, // ADDED
    "Modernizr": true // ADDED
  },
  "browser" : true,
  "boss" : true,
  "curly": true,
  "debug": false,
  "devel": true,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true,
  "unused": true
}

在这个例子中,我定义了 Ember(也可以定义 Em)、使用 '$' 的 jQuery 和 Modernizr。这将停止出现在终端中的 jshint 错误消息。

这是根据ember-cli 文档

“如果您想使用写入全局命名空间的外部库(例如 moment.js),您需要将它们添加到项目的 .jshintrc 文件的 predef 部分并将其值设置为 true。如果您在测试中使用 lib ,也需要将其添加到您的 tests/.jshintrc 文件中。”

于 2014-06-27T02:44:45.857 回答
6

明确导入 Ember 模块似乎是现在的官方方式。使用模块和解析器下的Ember 文档现在说,当您想使用 Ember 和用于 Ember 数据时必须明确说明。import Emberimport DS

我一直在寻找原因,但还没有找到任何东西,但我假设它是为了明确依赖关系并使创建普通的旧 JavaScript 对象文件成为可能。

于 2014-06-20T09:33:16.260 回答