如何使package.json从另一个文件夹运行server.js(将平均堆栈项目运行到heroku)

时间:2019-04-02 16:37:34

标签: node.js angular heroku package.json

我有一个要在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,但没有成功

0 个答案:

没有答案