Я использовал приложение create-реакции-приложение, а затем сделал экспресс-сервер для обработки чеков. Все работает на моем локальном хосте, но мне нужно запустить npm start и в другом терминале, node server.js. Чтобы они могли общаться друг с другом, я добавил прокси в package.json к порту сервера, работающему на localhost: 9000, это не работает в heroku, поэтому я удалил его и могу развернуть на Heroku, но на сервере не запускается, я не думаю, что я когда-либо запускаю сервер ...
Я считаю, что проблема в том, что у меня сейчас только один package.json. И его стартовый скрипт начинает реагировать, а не сервер ... Из того, что я прочитал, мне нужен другой package.json специально для server.js, но каждый раз, когда я пытался это сделать, что-то ломалось ... Я пытался переместив его в свою папку, добавив туда package.JSON. Я попытался сохранить исходный пакет .JSON там, где он находится, и скопировать его в папку src с помощью app.js, затем изменив стартовый скрипт в исходном файле на «node server.js» ... Я потерян
структура
root
-build
-node modules
-public
--index.html
-src
--app.js
--...
-env
-gitignore
-package.json
-server.js
package.JSON
{
"name": "...",
"version": "0.1.0",
"private": true,
"engines": {
"node": "10.15.3"
},
"dependencies": {
"axios": "^0.19.0",
"body-parser": "^1.19.0",
"dotenv": "^8.0.0",
"express": "^4.17.1",
...
"stripe": "^7.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:9000"
}
server.js
require('dotenv').config()
const app = require("express")();
const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);
app.use(require("body-parser").json());
app.post("/charge", async (req, res) => {
try {
let { status } = await stripe.charges.create({
amount: 2500,
currency: "usd",
description: "...",
source: req.body.token,
metadata: {
...
},
});
res.json({ status });
} catch (err) {
res.status(500).end();
}
});
app.listen(process.env.PORT || 9000, () => console.log("Listening on port 9000"));