我正在使用Node.js和EJS在我的网站上呈现“购物”页面,其中包括购物车和Stripe checkout弹出窗口。它在我的本地主机中完美呈现-但在HostGator托管的实际VPS服务器上,显示“找不到文件”。我将所有内容都迁移到了VPS并更改了名称服务器。
这是我的server.js文件:
if (process.env.NODE_ENV !== "production") {
require("dotenv").config();
}
const stripeSecretKey = process.env.STRIPE_SECRET_KEY;
const stripePublicKey = process.env.STRIPE_PUBLIC_KEY;
console.log(stripeSecretKey, stripePublicKey);
const express = require("express");
const app = express();
const fs = require("fs");
const stripe = require("stripe")(stripeSecretKey);
app.set("view engine", "ejs");
app.use(express.json());
// app.use(express.static("public"));
// app.set("views", path.join(__dirname, "views"));
app.use(express.static(__dirname));
app.get("/purchase", function(req, res) {
fs.readFile("items.json", function(error, data) {
if (error) {
res.status(500).end();
} else {
res.render("purchase.ejs", {
stripePublicKey: stripePublicKey,
items: JSON.parse(data)
});
}
});
});
app.post("/process-payment", function(req, res) {
fs.readFile("items.json", function(error, data) {
if (error) {
res.status(500).end();
} else {
const itemsJson = JSON.parse(data);
const itemsArray = itemsJson.wine;
let total = 0;
req.body.items.forEach(function(item) {
const itemJson = itemsArray.find(function(i) {
return i.id == item.id;
});
total = total + itemJson.price * item.quantity;
});
stripe.charges
.create({
amount: total,
source: req.body.stripeTokenId,
currency: "usd"
})
.then(function() {
console.log("Charge Successful");
res.json({ message: "Your purchase was successful! Thank you." });
})
.catch(function() {
console.log("Charge Failed");
res.status(500).end();
});
}
});
});
app.listen(3000);