2016-11-30 4 views
0

Из простого рабочего проекта Angular 2 + Webpack я пытаюсь интегрировать Apache Thrift, реализуя учебник Trrift. Я достигаю точки, где все работает, кроме браузера не может найти модуль бережливости:Как сделать бережливость для работы с Angular 2 и webpack?

Uncaught ReferenceError: Thrift is not defined 

Ошибки брошенных из бережливости сгенерированных файлов, tutorial_types.js, когда он пытается получить доступ к модулю бережливости:

InvalidOperation = function(args) { 
    this.whatOp = null; 
    this.why = null; 
    if (args) { 
    if (args.whatOp !== undefined && args.whatOp !== null) { 
     this.whatOp = args.whatOp; 
    } 
    if (args.why !== undefined && args.why !== null) { 
     this.why = args.why; 
    } 
    } 
}; 
Thrift.inherits(InvalidOperation, Thrift.TException); 

Угловая загрузка приложения, которое загружает сгенерированные файлы, которые пытаются загрузить Thrift и сбой.

Проект доступен здесь: https://github.com/osechet/angular-thrift

Чтобы проверить, запустите:

git clone https://github.com/osechet/angular-thrift 
cd angular-thrift 
npm install 
npm gen.thrift 
npm start 

Затем откройте http://localhost:8080/ в браузере.

Я проверил файлы, созданные Webpack, и модуль бережливости в комплекте. Что мне не хватает?

+0

Было бы полезно, если бы вы могли добавить часть кода, который выдает ошибку на ваш вопрос, - это много, чтобы попросить людей установить ваш проект и запустить его самостоятельно. –

+1

@JoeClay Вы правы. Я добавил разъяснения по этому поводу. – osechet

+1

Hm, делает ли Thrift фактически импортированный * в * сгенерированный файл? Если нет, то, вероятно, почему-то не удается. Вам нужно будет либо выяснить способ заставить Thrift генерировать файлы с помощью «var Thrift = require (« бережливость »):' вверху или импортировать его из одного из ваших файлов и присоединить его к глобальной среде (' window.Thrift'). –

ответ

1

Благодаря замечанию @ JoeClay, я нашел проблему. Библиотека Javascript, предоставляемая компанией Thrift, не экспортирует какой-либо модуль и, следовательно, не поставляется в комплекте с Webpack.

Я изменил свой проект, чтобы использовать модуль браузера библиотеки nodejs, предоставленный Thrift (thrift/lib/nodejs/lib/thrift/browser.js). Поступая таким образом, я смог заставить все приложение работать.

+0

Рад слышать, что я мог бы помочь :) –

Смежные вопросы