0

你好,我正在为这个问题寻求帮助我正在为我的数据库开发 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] 启动 node server.js Express 服务器监听端口 NaN

在端口 3000 上处于 %s 模式

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 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:

但它自己的连接与此有关

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")
      }}
 );

寻求一些帮助来解决这个问题,谢谢

4

1 回答 1

2

您的问题是,用户名属性user不是 userName,看起来 node-mssql 为其创建了一个别名userName,然后usernameuserName繁琐的库中为其分配了变量。然后,当尝试访问 , 时username.lengthusernameundefined导致您的TypeErrorsinceundefined没有长度。您可以在github的源代码tedious中看到这一点。

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"
  } 
}
于 2018-01-30T14:46:01.880 回答