2013-04-04 2 views
2

Я, кажется, испытываю конфликт пространства имен/бережливого пространства.пространство имени javascript узла бережливости

Foo.thrift 
... 
struct Error { 
    1: i32 code, 
    2: string message 
} 
... 

, который генерирует следующий файл с помощью thrift --gen js:node Foo.thrift (бережливость v0.9.0)

Foo_types.js 
... 
Error = module.exports.Error = function(args) { 
    this.code = null; 
    this.message = null; 
    if (args) { 
    if (args.code !== undefined) { 
     this.code = args.code; 
    } 
    if (args.message !== undefined) { 
     this.message = args.message; 
    } 
    } 
}; 
Error.prototype = {}; 
Error.prototype.read = function(input) { 
... 

I включает модуль в узле

var FooTypes = require('./../gen-nodejs/Foo_types') 

Я, кажется нарваться конфликта имен с в JavaScript Объект с ошибкой

callback(new Error("Couldn't find profile")); 

В обратном вызове он показывает, что у меня есть объект с code и message против простой старой JS-ошибки, содержащей «сообщение», хотя я не просил FooTypes.Error.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Error

Кто-нибудь еще столкнулся с этим? Как сделать ссылку на обычную JS-ошибку?

Thanks

ответ

2

Вам не хватает декларации пространства имен. Попробуйте это:

# Foo.thrift file content 
namespace js Foo 
... 
struct Error { 
    1: i32 code, 
    2: string message 
} 
... 

Тогда ваш объект бережливость будет Foo.Error.

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