使用Ember-CLI并运行ember服务器时,我从JSLint收到以下错误:
[app_path]/filename.js: line 1, col 16, 'Ember' is not defined.
添加import Ember from 'ember';
修复此问题。
这是我现在所有文件的官方方式吗?该文档尚未提及此更改。
答案 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错误消息。
“如果要使用写入全局命名空间的外部库 (例如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目标文件。