我正在通过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
中看不到任何可疑的东西。
答案 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会自动为你做更有效。
答案 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'
}
}
});