首页 > 解决方案 > Node.js 使用 mssql 访问数据库

问题描述

我正在制作 Meteor.js 应用程序,我必须从 mssql 数据库中获取数据。我使用 Meteor 1.8 和一个 npm 包 - mssql(版本 5.1.0)。那是我的代码:

const sql = require('mssql')

const config = {something}

export default function fetch(query) {
    const config = {something}

    sql.connect(config, err => {

        if (err) {
            console.error(err)
            return
        }

        // create Request object
        var request = new sql.Request()

        // query to the database and get the records
        request.query(query, (err, recordset) => {

            if (err) {
                console.error(err)
                return
            }

            return recordset
        })
    })
}

我有这样的错误

TypeError: sql.connect 不是函数

我不知道发生了什么,我尝试了很多方法,但都失败了。当我使用ConnectionPool时,我看到一个错误,指出 ConnectionPool 不是构造函数。这样做的正确方法是什么?

在我的配置文件中,我有:用户、密码、服务器、数据库、端口。

标签: javascriptnode.jssql-servermeteor

解决方案


这似乎是因为您正在混合您的模块系统,您正在使用require(类似于 CommonJS)但显然是一个 ECMAScript 模块(ESM)(来自export default ...)。Node.js 本身不会让你这样做,但如果你使用某种捆绑器或转译器,也许它可能......

将您更改require为:

import sql from "mssql";

...并确保 Node.js 正在使用 ESM¹,我不会因为sql.connect不是函数而收到任何错误。


¹ 就我而言,因为我使用的是 Node.js v12,所以我通过"type": "module"在我的中package.json运行它并通过node --experimental-modules filename.js, more here运行它来做到这一点。


推荐阅读