Jens Geyer created THRIFT-5947:
----------------------------------
Summary: Exception has occurred: Error: writeString called without
a string/Buffer argument: [object Object]
Key: THRIFT-5947
URL: https://issues.apache.org/jira/browse/THRIFT-5947
Project: Thrift
Issue Type: Bug
Components: JavaScript - Compiler
Reporter: Jens Geyer
There is a bug in the JavaScript custom exception constructor implementation.
This thrift custom exception :
{code}
exception CustomError {
1: required ErrorCode code;
}
{code}
results to a constructor which takes a single JS Object with custom properties :
{code}
const CustomError = module.exports.CustomError = class extends
Thrift.TException {
constructor(args) {
super(args);
this.name = "CustomError";
this.code = null;
// ...
{code}
We can check it in the associated TypeScript typings :
{code}
declare class ZaapError extends Thrift.TException {
public code: ErrorCode;
constructor(args?: { code: ErrorCode; });
}
{code}
The generated code gives the JS object to the constructor of Thrift.TException.
But the Thrift.TException constructor takes a single string argument :
{code}
exports.TException = TException;
function TException(message) {
Error.call(this);
Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.message = message;
};
util.inherits(TException, Error);
{code}
Giving this custom object to the TException (instead of a string) throws
unwanted Thrift exceptions in TBinaryProtocol.prototype.writeStringOrBinary :
{code}
Exception has occurred: Error: writeString called without a string/Buffer
argument: [object Object]
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)