我有一个要在Heroku上托管的普通堆栈项目。设置好后,我使用Angular中的package.json和server.js将Heroku连接到Angular应用程序。然后,我发现需要运行节点应用程序的server.js以便同时运行两个服务器。这在本地有效,但是在Heroku启动时我无法弄清楚如何运行/backend/server.js文件。
所以我的文件夹结构看起来像这样
backend
server.js (the file I want to run)
the rest of the backend files
server.js (the file I manage to run)
package.json (the package.json heroku runs)
procfile
the angular application
当我的package.json看起来像这样
"start": "node server.js"
html呈现,但是express不起作用。
当我唯一要更改的是该行时,
"start": "node ./backend/server.js"
Heroku在尝试访问网页时给我一个应用程序错误
这是我的Procfile
web: node ./backend/server.js
和我的后端/server.js
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const path = require('path');
const config = require('./config/database');
const router = express.Router();
mongoose.connect(config.database, { useNewUrlParser: true });
const connection = mongoose.connection;
connection.once('open', () => {
console.log('Connected to mLab');
});
const app = express();
app.use(cors());
app.use(express.static(path.join(__dirname, '../dist/geoApp')))
app.use(bodyParser.json());
app.use('/', router);
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, '../dist/geoApp/index.html'));
});
app.listen(process.env.PORT || 8080, () =>
console.log('Express server running on port 8080'));
我尝试了这里的建议Heroku can't find server.js,但没有成功