2014-10-08 4 views
2

Я развертываю приложение Ember CLI через jenkins и публикую его с помощью nginx. Вот Дженкинс скрипт сборки:Ember CLI не работает

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 ответить на то, что похоже на аналогичный вопрос, но это не работает для меня. Все работает отлично в моей среде dev, и я не вижу ничего подозрительного в Brocfile.js.

+0

У меня возникла аналогичная проблема в производстве. В моем случае у меня был компонент с макетом, определенный как «layout: Ember.Handlebars.complie ('....')». Но затем я удалил часть макета, затем я создал отдельный файл hbs для самого компонента и wolla, по крайней мере, Ember.Handlebars.compile не является ошибкой функции. –

ответ

1

В производстве используется ручка-runtime, которая не включает Ember.Handlebars.compile. Причина в том, что это меньше для использования в производстве, и более эффективно прекомпилировать, который ember-cli делает для вас автоматически.

Большое обсуждение на PR found here

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' 
+ } 
+ } 
+}); 
0

Я сталкивался с такой же проблемой с загрузчиком для пакета Ember. Временным решением (от 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' 
    } 
    } 
});