将带有Express.js的SQL Server API部署到Heroku

时间:2018-12-04 21:48:32

标签: node.js sql-server express heroku

我对Express.js非常陌生,但是现在我已经创建了SQL Server DB的api。它在localhost上运行良好,但是现在,我已经在Heroku上进行了部署。当我的CMD提示符打开时,我的api正常工作,但是当它关​​闭时,出现内部服务器错误。

以前,我使用Mongo作为数据库,猫鼬创建了一个测试,并将其部署到Heroku,即使提示未打开,该API仍然可以正常工作。有人知道我是否必须像创建猫鼬一样创建另一个.js文档,否则要保持我的api正常工作?

这是我在.js文档(server.js)上的代码:

const express = require('express');
const bodyParser = require('body-parser');
const sql = require('mssql');
const app = express();

app.use(bodyParser.json());

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
    next();
});


const dbConfig = {
    user: "daUser",
    password: "daPass",
    server: "daServer",
    database: "DaDB"
}

const executeQuery = function (res, query) {
    sql.connect(dbConfig, function (err) {
        if (err) {
            console.log(err);
            res.send(err);
        }
        else {
            // create Request object
            var request = new sql.Request();
            // query to the database
            request.query(query, function (err, result) {
                if (err) {
                    console.log(err);
                    res.send(err);
                }
                else {
                    res.send(result);
                }
            });
        }
    });
}

app.get("/api/HolidayBaseApi", function (req, res) {
    var query = "SELECT * FROM [HolidaysBase]";
    executeQuery(res, query);
})

const PORT = process.env.PORT || 8080

app.listen(PORT, () => {
    console.log("App now running on port", PORT);
});

我的package.json下一个:

    {
  "name": "holidaysbaseapi",
  "version": "1.0.0",
  "description": "Api of Holidays",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Chuck Villavicencio",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mssql": "^4.3.0"
  },
  "engines": {
    "node": "8.11.3",
    "npm": "5.6.0"
  }
}

在Heroku上,我已经安装了Heroku CLI;登录后,克隆存储库并部署我的更改。

我正在使用Express.js,Node,SQL Server和Heroku

1 个答案:

答案 0 :(得分:0)

问题是您的SQL Server数据库是在本地计算机上创建的,而heroku无法连接到它。您可以使用heroku提供的postgresDB,也可以在互联网上的任何提供程序中创建sql服务器数据库,并将dbConfig替换为该数据库的配置