node-mssql не может прочитать длину свойства undefined из имени пользователя dbconfig

привет, я ищу помощь с этой проблемой, я работаю над rest api для моей базы данных, есть эта проблема

var bufferLength = 64 + domain.length * 2 + username.length * 2 + lm v2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;

TypeError: невозможно прочитать свойство "длина" неопределенного значения.

Я пробовал несколько способов решить эту проблему, но ничего особо не помогло. решения, размещенные в Интернете, вообще не работают на моем компьютере или по какой-то причине возвращают ту же ошибку

вот мой код

const sql = require('mssql');
const express = require('express')
const app = express()


var config = {
  userName: 'user' , 
  password: 'pass', 
  domain: "AD",
  server: serversIP,
  database: 'test',
  port: 2222,
  debug: true,
  driver: 'tedious',
  options: {
    database:"test",
    instanceName : "instance"
  } 
}

app.get("/getUsers" , (req, res)=>{
  sql.connect(config, function (err) {
    var request = new sql.Request();
    if (err) {
        console.log(err);
        return;
    }
      req.query("SELECT * FROM test").then(function (recordset) {
          console.log(recordset);
          conn.close();
      })
      .catch(function (err) {
          console.log(err);
          conn.close();
      });       
  })
});

три - это полное сообщение об ошибке

[nodemon] запускающий узел server.js Экспресс-сервер прослушивает порт NaN

в режиме% s на порту 3000

C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ ntlm-payload.js: 44

var bufferLength = 64 + domain.length * 2 + username.length * 2 + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.len gth + 4;

TypeError: невозможно прочесть свойство "длина" неопределенного значения в

NTLMResponsePayload.createResponse (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ ntlm-payload.js: 44: 59) в новом NTLMResponsePayload

(C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ ntlm-payload.js: 23: 22) в Connection.sendNTLMResponsePacket (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 981: 21) в Connection.receivedChallenge (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 1641: 21) в Connection.dispatchEvent (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 857: 45) в Connection.processLogin7NTLMResponse (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 1153: 21) в Connection .message (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 1647: 21) в Connection.dispatchEvent (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 857: 45) в MessageIO. (C: \ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js: 751: 18) в emitNone (events.js: 86: 13)

но само соединение работало с этим

const Connection = require('tedious').Connection;
var connection = new Connection(config);
connection.on('connect', function(err) {
      if (err) {
        console.log(err);
      } else {
        console.log("server is connected to DB")
      }}
 );

ищу помощь в решении этой проблемы, спасибо


person Vladimir Zaguzin    schedule 30.01.2018    source источник
comment
Какое значение и тип данных вы используете для значения server / serversIP? В других примерах строки подключения узла это выглядит как полное доменное имя в строковом формате.   -  person Jacob H    schedule 30.01.2018
comment
@JacobH: в моем случае мне пришлось разделить IP-адрес серверов и имя экземпляра, когда я начал его, просто утомительно; и это не имело никакой разницы с mssql-node. У меня он был как server: 127.0.0.1 \ instance (замените 127 ... на настоящий) и как отдельные варианты   -  person Vladimir Zaguzin    schedule 30.01.2018
comment
Как отмечается в инструкции, вы не должны передавать экземпляр в свойство server. Вы уже передаете экземпляр свойству экземпляра. В инструкциях также говорится не использовать IP-адрес сервера и использовать полное доменное имя. Итак, я бы начал с просмотра документации, поскольку, похоже, это ваша проблема.   -  person Jacob H    schedule 30.01.2018


Ответы (1)


Ваша проблема в том, что свойство username user, а не userName, похоже, node-mssql создает псевдоним для userName, которому затем назначается переменная username из userName в утомительной библиотеке. Затем при попытке доступа к username.length, username равно undefined, в результате получается ваш TypeError, поскольку undefined не может иметь длину. Вы можете увидеть это в источнике gith _ / а>.

var config = {
  user: 'user' , 
  password: 'pass', 
  domain: "AD",
  server: 'db.domain.local',
  database: 'test',
  port: 2222,
  debug: true,
  driver: 'tedious',
  options: {
    database:"test",
    instanceName : "instance"
  } 
}
person peteb    schedule 30.01.2018