使用mssql包连接Node.js与SQL Server时遇undefined值错误求助
Node.js使用mssql连接SQL Server报错:Cannot read properties of undefined (reading 'port')
错误信息
PS F:\Visual Studio Code\NodeSQLServer> node dboperations.js TypeError: Cannot read properties of undefined (reading 'port') at new ConnectionPool (F:\Visual Studio Code\NodeSQLServer\node_modules\mssql\lib\base\connection-pool.js:60:36) at new ConnectionPool (F:\Visual Studio Code\NodeSQLServer\node_modules\mssql\lib\tedious\connection-pool.js:10:1) at Object.connect (F:\Visual Studio Code\NodeSQLServer\node_modules\mssql\lib\global-connection.js:18:24) at getResult (F:\Visual Studio Code\NodeSQLServer\dboperations.js:6:36) at Object.<anonymous> (F:\Visual Studio Code\NodeSQLServer\dboperations.js:16:1) at Module._compile (node:internal/modules/cjs/loader:1254:14) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) undefined
错误原因
导入语句解构赋值错误:
dbconfig.js直接导出了config对象,但dboperations.js使用let { config } = require('./dbconfig');尝试解构导出对象的config属性——实际导出的就是config本身,没有嵌套的config属性,导致变量config最终为undefined。当mssql的connect方法接收undefined时,内部读取port属性就会触发报错。身份验证配置冲突:
配置中同时设置了trustedConnection: true(Windows身份验证)和user/password(SQL身份验证),两者互斥,会导致连接逻辑混乱。
解决方法
修正导入语句
将dboperations.js中的导入代码从解构赋值改为直接导入:// 原错误代码 // let { config } = require('./dbconfig'); // 修改后 const config = require('./dbconfig');统一身份验证方式
根据实际使用的验证方式调整配置:- 若用Windows身份验证:删除
user和password字段,保留trustedConnection: true; - 若用SQL身份验证:将
trustedConnection改为false,保留user和password字段。
- 若用Windows身份验证:删除
验证基础配置
- 确认SQL Server的SQLEXPRESS实例已启用TCP/IP协议,端口1433处于开放状态;
- 确保数据库
Rane存在,用户Tableau拥有访问config_table_master表的权限。
内容的提问来源于stack exchange,提问作者Mr. Basu
相关产品推荐
相关产品推荐

