Проблема с подключением к rethinkdb из Windows 11 через thinky (nodejs)

Я пытаюсь нанять нового разработчика, который использует Windows 11 как единственный в нашей небольшой команде. Я помог ему установить WSL2 и Ubuntu 20.04.3 LTS (ядро Linux: 5.10.93.2-microsoft-standard-WSL2).

Мы — еще 3 разработчика, которые используют нативную Ubuntu, WSL2 Ubuntu 21.04 и macOS соответственно. Мы все на nodejs 16.14 с одинаковым package-lock.jsonфайл.

Он единственный, кто получает Error [ERR_STREAM_WRITE_AFTER_END]: write after end.

тлдр;

Обе ошибки связаны с записью в файл .

Кто-нибудь знает о каких-либо проблемах, связанных с реализацией nodejs в Windows 11?

Мы используем thinky , как описано ниже:

      'use strict';

const createThinky = require('thinky');

const { rethinkdbConfig } = require ('./utils/config.js');

const thinky = createThinky (rethinkdbConfig);

// Thinky is our ORM
var type = thinky.type;

// Creates the thinky DB model for payments - we save the amount and the stripe customerID for each transaction
// You can execute any rethinkdb query language on the model, eg Payment.count().execute()
var Payment = thinky.createModel("payments", {
    id: type.string(),
    amount: type.number(),
    customerID: type.string(),
    project: type.string(),
    projectName: type.string(),
    projectPercentage: type.number(),
    firefundPercentage: type.number(),
    type: type.string(),
    processor: type.string(),
    email: type.string(),
    charged: type.boolean(),
    recharged: type.boolean()
});

module.exports = {
  model: Payment,
};

Теперь не имеет значения, подключается ли он к локальному экземпляру rethinkdb (2.4.1~0focal), нашему промежуточному или производственному rethinkdb (2.3.5~0trusty) на AWS.

Я заставил его попробовать Netcat с nc -zv [url] 28015чтобы увидеть, может ли он вообще подключиться, и он успешно подключился. Так что я не думаю, что это проблема брандмауэра.

Трассировка стека ошибок

      node ./bin/www
  firefund:www Listening on port 3000 +0ms

node:events:498
      throw er; // Unhandled 'error' event
      ^


Error [ERR_STREAM_WRITE_AFTER_END]: write after end                                                                         
  at new NodeError (node:internal/errors:371:5)
    at _write (node:internal/streams/writable:319:11)
    at Socket.Writable.write (node:internal/streams/writable:334:10)
    at Connection._sendProof (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:294:19)
    at /home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:248:12
    at Object.tryCatch (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/helper.js:170:3)
    at Connection._computeSaltedPassword (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:247:12)
    at Socket.<anonymous> (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:184:18)
    at Socket.emit (node:events:520:28)
    at Socket.emit (node:domain:475:12)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Emitted 'error' event on Connection instance at:
    at Socket.<anonymous> (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:129:12)
    at Socket.emit (node:events:520:28)
    at Socket.emit (node:domain:475:12)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
        code: 'ERR_STREAM_WRITE_AFTER_END'
    }

Трассировка стека указывает на то, что это ошибка соединения в node_modules/rethinkdbdash/lib/connection.js .

соединение.js

connection.js: строка 294 this.connection.write(Buffer.concat([new Buffer(message.toString()), NULL_BUFFER]))внизу.

      Connection.prototype._sendProof = function(authentication, randomNonce, saltedPassword) {
  var clientFinalMessageWithoutProof = "c=biws,r=" + randomNonce;
  var clientKey = crypto.createHmac("sha256", saltedPassword).update("Client Key").digest()
  var storedKey = crypto.createHash("sha256").update(clientKey).digest()

  var authMessage =
      "n=" + this.user + ",r=" + this.randomString + "," +
      authentication + "," +
      clientFinalMessageWithoutProof

  var clientSignature = crypto.createHmac("sha256", storedKey).update(authMessage).digest()
  var clientProof = helper.xorBuffer(clientKey, clientSignature)

  var serverKey = crypto.createHmac("sha256", saltedPassword).update("Server Key").digest()
  this.serverSignature = crypto.createHmac("sha256", serverKey).update(authMessage).digest()

  this.state = 2
  var message = JSON.stringify({
    authentication: clientFinalMessageWithoutProof + ",p=" + clientProof.toString("base64")
  })
  this.connection.write(Buffer.concat([new Buffer(message.toString()), NULL_BUFFER]))
}

Ошибка варианта

Он также сообщил о варианте той же ошибки, что и ниже:

      node ./bin/www
  firefund:www Listening on port 3000 +0ms

node:events:498
      throw er; // Unhandled 'error' event
      ^


Error [ERR_STREAM_WRITE_AFTER_END]: write after end                                                                         
  at new NodeError (node:internal/errors:371:5)
    at _write (node:internal/streams/writable:319:11)
    at Socket.Writable.write (node:internal/streams/writable:334:10)
    at /home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:143:23
    at Object.tryCatch (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/helper.js:170:3)
    at Socket.<anonymous> (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:142:12)
    at Socket.emit (node:events:523:35)
    at Socket.emit (node:domain:475:12)
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1143:10)
Emitted 'error' event on Connection instance at:
    at Socket.<anonymous> (/home/edel_weiss/firefund-production/node_modules/rethinkdbdash/lib/connection.js:129:12)
    at Socket.emit (node:events:520:28)
    at Socket.emit (node:domain:475:12)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
        code: 'ERR_STREAM_WRITE_AFTER_END'
    }

Этот вариант предполагает, что ошибка находится в строке 143 в connection.js:

      self.connection.write(Buffer.concat([versionBuffer, authBuffer, NULL_BUFFER]));
      self.connection.on('connect', function() {
    self.connection.removeAllListeners('error');
    self.connection.on('error', function(error) {
      self.emit('error', error);
    });

    var versionBuffer = new Buffer(4)
    versionBuffer.writeUInt32LE(protodef.VersionDummy.Version.V1_0, 0)

    self.randomString = new Buffer(crypto.randomBytes(18)).toString('base64')
    var authBuffer = new Buffer(JSON.stringify({
      protocol_version: PROTOCOL_VERSION,
      authentication_method: AUTHENTIFICATION_METHOD,
      authentication: "n,,n=" + self.user + ",r=" + self.randomString
    }));

    helper.tryCatch(function() {
      self.connection.write(Buffer.concat([versionBuffer, authBuffer, NULL_BUFFER]));
    }, function(err) {
      // The TCP connection is open, but the ReQL connection wasn't established.
      // We can just abort the whole thing
      self.open = false;
      reject(new Err.ReqlDriverError('Failed to perform handshake with '+self.host+':'+self.port).setOperational());
    });
  });

Если вы дочитали до этого места - СПАСИБО!

Обе ошибки связаны с записью в файл .

Кто-нибудь знает о каких-либо проблемах, связанных с nodejs? Bufferреализация на Windows 11?

0 ответов

Другие вопросы по тегам