#node.js #rsocket
Вопрос:
Я хотел бы запустить TCP-клиент Rsocket на NodeJS, используя простой пример из руководства Rsocket (https://rsocket.io/guides/rsocket-js/client/rsocket-tcp-client ):
async function createClient(options) {
const client = new RSocketClient({
setup: {
dataMimeType: 'text/plain',
keepAlive: 1000000, // avoid sending during test
lifetime: 100000,
metadataMimeType: 'text/plain',
},
transport: new RSocketTCPClient({
host: options.host,
port: options.port,
}),
});
return await client.connect();
}
async function run() {
const rsocket = await createClient({
host: '127.0.0.1',
port: 9898,
});
}
await run();
но когда я пытаюсь запустить приложение, node app.js
возникает ошибка:
TypeError: RSocketTcpClient is not a constructor
.
Я проверил реализацию RSocketTcpClient
, и похоже, что есть конструктор:
export class RSocketTcpClient extends RSocketTcpConnection {
constructor(options: net.TcpSocketConnectOpts, encoders?: Encoders<any>);
connect(): void;
}
Кто-нибудь может сказать мне, что не так? Я использую простой package.json:
{
"name": "rsocket-example",
"private": true,
"description": "RSocket example",
"version": "0.0.27",
"repository": {
"type": "git",
"url": "https://github.com/rsocket/rsocket-js.git"
},
"type": "module",
"dependencies": {
"rsocket-core": "^0.0.27",
"rsocket-flowable": "^0.0.27",
"rsocket-tcp-server": "^0.0.27",
"rsocket-types": "^0.0.27",
"rsocket-websocket-client": "^0.0.27",
"rsocket-websocket-server": "^0.0.27"
}
}
Ответ №1:
Исходный проект, rsocket-js здесь, похоже, неправильно сконфигурировал перенос, позволяя экспорту по умолчанию для RSocketTCPClient
объявления класса переходить в default
переменную.
Затем вы можете либо настроить конфигурацию транспилятора в своем собственном проекте, либо использовать только default
экспортированный объект следующим образом:
// instead of new RSocketTCPClient()
new RSocketTCPClient.default({
host: options.host,
port: options.port,
});