你好,我正在寻找这个问题的一些帮助 我正在为我的db工作休息api得到了这个问题
var bufferLength = 64 + domain.length * 2 + username.length * 2 + lm v2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;
TypeError:无法读取未定义的属性“length”
我已经尝试了几种方法来解决这个问题,但没有任何帮助。在线发布的解决方案根本无法在我的机器上运行或由于某种原因返回相同的错误
有我的代码
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 Express服务器侦听端口NaN
在端口3000上以%s模式
C:\用户\用户\文档\ dbtest \ node_modules \乏味\ 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:无法读取
中未定义的属性“length”NTLMResponsePayload.createResponse 新的NTLMResponsePayload上的(C:\ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ ntlm-payload.js:44:59)
Connection.sendNTLMResponsePacket上的(C:\ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ ntlm-payload.js:23:22) Connection.receivedChallenge上的(C:\ Users \ User \ Documents \ dbtest \ node_modules \ tedious \ lib \ connection.js:981:21) (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ lib中\ connection.js:1641:21) 在Connection.dispatchEvent (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ lib中\ connection.js:857:45) 在Connection.processLogin7NTLMResponse (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ lib中\ connection.js:1153:21) 在Connection.message (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ lib中\ connection.js:1647:21) 在Connection.dispatchEvent (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ lib中\ connection.js:857:45) 在MessageIO。 (C:\用户\用户\文件\ dbtest \ node_modules \乏味\ 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")
}}
);
寻求一些帮助来解决这个问题,谢谢
答案 0 :(得分:2)
你的问题是,用户名属性是user
而不是userName
,看起来像node-mssql为userName
创建一个别名,然后从中分配变量username
userName
在繁琐的图书馆里。然后,在尝试访问username.length
时,username
为undefined
,导致您的TypeError
,因为undefined
无法获得长度。您可以在source on the tedious
github。
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"
}
}