Ember-CLI:修复"' Ember'没有定义"?

时间:2014-06-19 17:04:22

标签: ember.js jslint ember-cli

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

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

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

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

2 个答案:

答案 0 :(得分: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
}

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

这是ember-cli docs

  

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

答案 1 :(得分:6)

现在,正式导入Ember模块似乎是正式的方式。 Ember documentation下的Using Modules & the Resolver现在表示,当您想要使用Ember和import Ember来表示Ember数据时,您必须明确import DS

我一直在寻找原因并且还没有找到任何东西,但我认为这是为了使依赖显式化,并且可以创建普通的旧JavaScript目标文件。