Node js knex 和 mssql error - 'TypeError: _this.driver.Connection is not a constructor'



不是问题,更多的是提醒,以防其他人遇到这种情况 - 在设置新节点项目时,我想使用 knex 访问 MSSQL 数据库服务器。 我正在用这个初始化knex:

{
client: 'mssql',
connection: {
    driver: 'msnodesqlv8',
    server: 'localhost',
    database:'testdb'
    options: {
        trustedConnection: true
    }
}

我收到错误:"类型错误:_this.driver.Connection 不是构造函数"。 经过大量的谷歌搜索,我找不到任何带有此错误消息的内容,所以我想我会在这里发布一个提示。

我安装了最新的knex,mssql和msnodesqlv8软件包。 这就是问题所在。 从mssql v4.x开始,knex和mssql(目前(玩得并不好。 我能够通过将 mssql 包降级到 3.3 来解决此问题。

答案与问题末尾所述完全相同。

"我安装了最新的knex,mssql和msnodesqlv8软件包。这就是问题所在。从mssql v4.x开始,knex和mssql(目前(玩得并不好。我能够通过将 mssql 包降级到 3.3 来解决此问题。

我也能够使用此解决方案成功解决问题。

我在 TypeScript 项目中遇到了同样的问题,最终的罪魁祸首是我在项目中添加了一个文件夹,该文件夹与 Knex 客户端的官方 npm 包同名。例如,我正在使用client : "pg"这意味着它在内部执行了一个 require("pg"( 来加载该客户端。

我的项目结构是这样的:

/app/
  node_modules/
  src/
    pg/
      index.ts -> my personal pg connector library
    ... other folders and files
  package.json
  tsconfig.json

罪魁祸首是我的/app/tsconfig.json有不当baseUrl。我使用了"baseUrl" : "./src"这意味着它是在/app/src中搜索pg并找到我自己的图书馆,而不是像人们期望的那样在/app/node_modules中查找。将baseUrl更改为./后,错误消失了。

相关内容

最新更新