【问题标题】:jshint complains: 'Ember' is not definedjshint 抱怨:'Ember' 未定义
【发布时间】:2014-06-17 15:18:21
【问题描述】:

我有一个标准的Ember main.js 文件,开头是这样的:

this.App = Ember.Application.create({
    LOG_TRANSITIONS: true,
    VERSION: '1.0.0',
    ready: function () {
        console.log('App version: ' + App.VERSION + ' is ready.');
    }
});

通过jshint 运行它会抱怨未定义 Ember,在部署阶段对于服务器中的这个特定文件来说这是正确的。因此,会显示很多错误消息。

Ember 通过index.html 中的script 标签在浏览器中可用:

<script src="scripts/vendor/ember-1.0.0-rc.2.js"></script>

我如何告诉jshint 关于Ember

【问题讨论】:

    标签: ember.js jshint


    【解决方案1】:

    以下应该这样做:

    /*global Ember */
    this.App = Ember.Application.create({
        LOG_TRANSITIONS: true,
        VERSION: '1.0.0',
        ready: function () {
            console.log('App version: ' + App.VERSION + ' is ready.');
        }
    });
    

    发现于JS Hint Docs

    【讨论】:

    • 您的意思是在实例化this.App 之前将/* global Ember */ 添加到main.js?这对我不起作用。
    • 那么您的 JSHint 设置一定有问题。它对我有用,如您所见,我已从文档中获取它。
    • 我在 jshint 邮件列表中找到了答案:global 前面不能有空格。一定是这样的:/*global Ember */。您能否更正您的答案以便我接受?
    • 空间似乎不再是问题了。我尝试写 /* global Ember */ 并且错误消失了。
    【解决方案2】:

    如果您使用的是新的 ES6,例如来自 ember-cli,则必须导入 Ember:

    import Ember from 'ember';
    

    我在关注Evil Trout's Ember Reddit tutorial,在测试中看到以下错误:

    my-new-app/routes/subreddit.js should pass jshint.
    my-new-app/routes/subreddit.js: line 3, col 16, 'Ember' is not defined.
    

    将上述行添加到my-new-app/routes/subreddit.js 的顶部通过了测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      相关资源
      最近更新 更多