如何让thrift与Angular 2和webpack一起工作?

时间:2016-11-30 12:53:05

标签: angular webpack thrift

从一个简单的Angular 2 + Webpack工作项目,我试图通过实现Thrift的教程来集成Apache Thrift。除了浏览器找不到Thrift模块之外,我达到了一切可行的地步:

Uncaught ReferenceError: Thrift is not defined

当thrift生成的文件tutorial_types.js尝试访问thrift模块时,会抛出该错误:

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);

Angular加载应用程序,加载生成的文件,尝试加载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创建的文件,并捆绑了thrift模块。我错过了什么?

1 个答案:

答案 0 :(得分:1)

感谢@ JoeClay的评论,我发现了问题。 Thrift提供的Javascript库不会导出任何模块,因此Webpack没有正确捆绑。

我将项目更改为使用Thrift(thrift/lib/nodejs/lib/thrift/browser.js)提供的nodejs库的浏览器模块。这样,我就能够使整个应用程序正常工作。