Ember CLI无法生产

时间:2014-10-08 06:40:09

标签: ember.js jenkins ember-cli broccolijs

我正在通过jenkins部署Ember CLI应用程序并使用nginx发布它。这是由jenkins构建脚本:

npm install
bower install
node_modules/ember-cli/bin/ember build --environment=production

nginx配置只是将sub.domain.com定向到jenkins\jobs\lastStable\archive\dist。这工作正常,但当我进入页面时,它是空白的,并在控制台中输出以下内容:

TypeError: Ember.Handlebars.compile is not a function   vendor-92ab6507ac60a5bf7c6819aa8fc418d6.js:18
ReferenceError: Swag is not defined   spa-client-9b01c6124f5b2a4cd2e95b62be7f5ba5.js:1

我猜这两个错误是相关的,但我无法弄清楚导致它们的原因。我已经尝试this回答似乎是类似的问题,但它对我没有用。在我的开发环境中一切正常,我在Brocfile.js中看不到任何可疑的东西。

3 个答案:

答案 0 :(得分:3)

我与我使用的第三方库之一存在同样的问题。

我使用此解决方案:https://github.com/rwjblue/_____ember-cli-test/commit/1a26911def6f04a4badee94c8a62d8205258867b

我的Brocfile.js差异:

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

答案 1 :(得分:1)

Production使用handlebars-runtime,不包括Ember.Handlebars.compile。原因是它在生产中使用它会更小,并且预编译哪个ember-cli会自动为你做更有效。

关于PR found here

的大量讨论

答案 2 :(得分:0)

我遇到了与ember包的bootstrap相同的问题。临时解决方案(来自GH)是在生产中包含整个handlebars.js文件:

var fileMover   = require('broccoli-file-mover');

var vendorTree = fileMover('vendor', {
    files: {
        'handlebars/handlebars.js': 'handlebars/handlbars.runtime.js'
    }
});

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