node.js - 使用 Express.js 将 SQL Server api 部署到 Heroku
问题描述
我对 Express.js 很陌生,但现在我已经创建了 SQL Server DB 的 api。它在 localhost 上运行良好,但现在,我已经部署在 Heroku 上。当我的 CMD 提示打开时,我的 api 工作正常,但是当它关闭时,我得到一个内部服务器错误。
以前,我使用 Mongo 作为 DB 创建了一个测试,mongoose 并部署到 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
解决方案
问题是您的 SQL 服务器数据库是在您的本地计算机上创建的,heroku 无法连接到它。您可以使用 heroku 提供的 postgresDB 或在 Internet 上的任何提供商中创建 sql server db,并将 dbConfig 替换为该 db 的配置
推荐阅读
- php - 为什么我不能从文档根目录之外投射由 PHP 提供的 MP4 文件?
- php - 配置 Apache 以接受任何主机请求
- r - 如何使用 R 创建时间序列螺旋图
- botframework - 如何从瀑布中的 TextPrompt 获得 Luis 得分最高的意图(Bot Framework v4)
- android - 如何杀死其他进程或在应用程序中使用 adb 命令行
- compiler-construction - Bison 意外令牌导致语法错误
- javascript - 选择选项的自定义属性并从 Angular 5 中的 AbstractControl 访问它?
- c - 在用 C 编写的自定义 shell 程序中重定向 I/O
- ios - 使用 Siesta 发布 API 时,请求方法返回“无法解析服务器响应”错误
- php - 在 laravel 的 json 响应中获取 HTTP 代码