Ember-CLI:修复"'Ember'未定义"?

Gra*_*pho 2 jslint ember.js ember-cli

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

[app_path]/filename.js: line 1, col 16, 'Ember' is not defined.
Run Code Online (Sandbox Code Playgroud)

添加import Ember from 'ember';修复此内容.

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

Dun*_*ker 7

编辑

来自Stephan Penner:

我们明确地将它[Ember]从[.jshintrc文件]中删除了,请改为输入ember.

我们计划将越来越多的余烬暴露为es6,有一天这将允许工具去除你没有使用的部分余烬.导致较小的构建.

不过,直到那个日期,它可能会为你节省很多麻烦.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
}
Run Code Online (Sandbox Code Playgroud)

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

这是根据ember-cli文档:

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


jlu*_*yiv 6

现在,正式导入Ember模块似乎是正式的方式.现在,使用模块和解析器下的Ember文档说明您必须明确表示何时使用Ember和Ember数据.import Emberimport DS

我一直在寻找原因,但还没有找到任何东西,但我认为这是为了使依赖显式,并使创建普通的旧JavaScript对象文件成为可能.