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

Ember.js ember cli在--environment=production上失败(未捕获错误:找不到模块),ember.js,npm,ember-cli,broccolijs,Ember.js,Npm,Ember Cli,Broccolijs,我正在使用ember cli,在选择生产环境时遇到问题。具体来说,当我运行ember-service--environment=development时,一切都正常工作,当我运行ember-service--environment=production时,我会得到一个空白页面。在控制台中,我看到: 未捕获类型错误:未定义不是函数 未捕获错误:找不到模块简单身份验证/身份验证程序/基 所有其他条件都是相同的,所有依赖项都是最新的。我是一个彻头彻尾的傻瓜,所以我甚至不知道从哪里开始调试:它是余烬

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

  • 未捕获类型错误:未定义不是函数
  • 未捕获错误:找不到模块简单身份验证/身份验证程序/基

所有其他条件都是相同的,所有依赖项都是最新的。我是一个彻头彻尾的傻瓜,所以我甚至不知道从哪里开始调试:它是余烬吗?余烬cli?西兰花?任何帮助都将不胜感激。

我遇到了完全相同的问题,James_1x0是正确的,这是一个花椰菜问题。 调试完成后,“undefined”错误出现在“Ember.handlebar.compile”上,这导致了其他研究。 在生产环境中,在ember cli构建过程中,“handlebar.js”似乎被“handlebar.runtime.js”所取代,这似乎是西兰花目前面临的问题

其他开发人员也有同样的问题,但也有其他库的问题:

这里的解决方案是添加:

    var index = app.legacyFilesToAppend.indexOf('bower_components/handlebars/handlebars.runtime.js');
if(index) {
    app.legacyFilesToAppend[index] = 'bower_components/handlebars/handlebars.js';
}
将“handlebar.runtime.js”替换为“handlebar.js”。 这也解决了我的问题。 它确实有一个缺点,即整个Handlebar文件都已部署,但在问题解决之前,它目前是一个工作区。

解决方案是:

这有点不标准,不鼓励这样做,但假设由于应用程序中的要求,您甚至需要在生产环境中使用完整版本的Handlebar

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

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

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

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

这不是ember cli失败,而是Brocoli无法生成,因为A)您在代码中引用了未定义的函数。B) 错误地引用简单身份验证/身份验证程序/base。以下是修改Brocfile.js的方法: