ember-cli失败--environment = production(未捕获错误:找不到模块)

时间:2014-07-29 14:42:30

标签: ember.js npm ember-cli broccolijs

我正在使用ember-cli并且在选择生产环境时遇到问题。具体来说,当我运行ember serve --environment=development时,一切正常,当我运行ember serve --environment=production时,我得到一个空白页面。在控制台中,我看到:

  • 未捕获的TypeError:undefined不是函数
  • 未捕获错误:找不到模块simple-auth / authenticators / base

所有其他事情都是平等的,所有依赖关系都是最新的。我是一个总菜鸟,所以我甚至不知道从哪里开始如何调试:它是不是它的余烬?烬-CLI?西兰花?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,James_1x0是正确的,这是一个花椰菜问题。 调试后发生,即"未定义"错误apears on" Ember.handlebars.compile"这导致了其他研究。 看起来,在生产环境中" handlebars.js"由" handlebars.runtime.js"取代在ember-cli构建过程中,此时似乎是西兰花的一个问题。

其他开发人员遇到了同样的问题,但也有其他库: https://github.com/stefanpenner/ember-cli/pull/675#issuecomment-47431195

这里的解决方案是添加:

    var index = app.legacyFilesToAppend.indexOf('bower_components/handlebars/handlebars.runtime.js');
if(index) {
    app.legacyFilesToAppend[index] = 'bower_components/handlebars/handlebars.js';
}

进入你的Brocfile.js以替换" handlebars.runtime.js"使用" handlebars.js"。 这也解决了我的问题。 它肯定有一个缺点,即整个把手文件已经部署,但现在是一个解决方案,直到问题得到解决。

答案 1 :(得分:0)

解决方案是mentioned on Ember CLI website

  

这有些不合标准且不鼓励,但假设由于您的应用程序中要求即使在生产环境中也需要使用完整版本的Handlebars。

基本上,您可以将vendorFiles选项传递给EmberApp实例,这将强制CLI包含完整版本的Handlebars。

handlebars.js中明确要求Brocfile.js的示例:

var app = new EmberApp({
  vendorFiles: {
    'handlebars.js': {
      production: 'bower_components/handlebars/handlebars.js'
    }
  }
});

这是解决此问题的推荐方法(discussion on GitHub)。