在 vagrant 中将 Node.js 连接到 apache 服务器上的 postgres

Posted

技术标签:

【中文标题】在 vagrant 中将 Node.js 连接到 apache 服务器上的 postgres【英文标题】:Connecting Node.js to postgres on apache server in vagrant 【发布时间】:2018-12-10 11:55:27 【问题描述】:

各位程序员,您好。 我正在为 Web 应用程序重建整个后端,并使用 typescript 从 php 后端切换到 node.js。我将重用我所有的旧 sql 文件,因为我的旧数据库结构就足够了。

我正在使用 ansible 脚本在 apache 服务器上通过 vagrant 启动我的节点 webapp。然后我手动 SSH 进入虚拟机并执行“npm start”来启动我的 webapp。这应该在 localhost:3000 启动我的应用程序,并只显示一个简单的“Hello world”文本,以确认应用程序已连接到 postgres 并正确运行。

我对 node 和 javascript/typescript 真的很陌生,如果我问一些愚蠢的问题,请提前道歉。

我得到的是“无法修剪会话:关系“会话”不存在,而不是预期的行为。

我从节点应用程序到 postgres 的连接如下所示:

const app = express();
const session = require ("express-session");
const pg = require ("pg");

const Pool = require("pg-pool");



// Create a pool once per process and reuse it
const pgPool = new Pool (
  host: localhost
  port: 5432,
  user: "postgres",
  password: "postgres",
  database: "test,
);

app.use(session(
  store: new(require("connect-pg-pool")(session))(
    pool: pgPool
  ),
  secret: SESSION_SECRET,
  cookie:  maxAge: 30 * 24 * 60 * 60 * 1000 , // 30 days
  resave: true,
  autoreconnect: true,
  saveUninitialized: true,

));
app.set("port", 3000);
app.set("views", path.join(__dirname, "../views"));
app.set("view engine", "pug");
app.get("/", homeController.index);

我的 server.ts 文件是我的应用程序监听端口的地方,如下所示:

const server = app.listen(app.get("port"), () => 
  console.log(
    "  App is running at http://localhost:%d in %s mode",
    app.get("port"),
    app.get("env")
  );
  console.log("  Press CTRL-C to stop\n");
);

【问题讨论】:

解决了吗?控制台出现什么错误? 我设法解决了这个问题,我忘记为我的数据库创建会话表。 “psql 好酷………… 请不要发送带有标签的垃圾邮件。这个问题与 Ansible 或 Vagrant 无关。 【参考方案1】:

在项目文件夹中运行“psql

【讨论】:

以上是关于在 vagrant 中将 Node.js 连接到 apache 服务器上的 postgres的主要内容,如果未能解决你的问题,请参考以下文章

从 Heroku 上的 Node.js 连接到 CloudSQL

第一次使用 `homestead ssh` 时连接到 vagrant 是不是有默认密码?

Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB

在 javascript/node.js 中连接到 Gmail IMAP API

在Node.js中使用serialport自动连接到特定设备

无法在 heroku 上使用 node.js 连接到 mongolab