Механизм по умолчанию не был указан, и в Heroku (MERN) не было предоставлено никаких расширений. - PullRequest
0 голосов
/ 07 мая 2020
• 1000 Я бы использовал app.set('view engine', 'ejs');, но я использую реакцию - MERN.

Nodejs:

const express = require('express');
const logger = require('morgan');
const passport = require('./passport/');
const PORT = process.env.PORT || 8080;
const app = express();
const mongoose = require('mongoose');
mongoose.connect('mongodb', {useNewUrlParser: true})
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(passport.initialize());
app.use(passport.session());
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: 'secret here',
    store: new MongoStore({ mongooseConnection: mongoose.connection })
}))

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));

app.use('/', indexRouter);
app.use('/authentication', usersRouter);

if (process.env.NODE_ENV === 'production') {
    app.use(express.static('client/build'))

    app.get("*", (req, res) => {
        res.sendFile(path.resolve(__dirname, "../client", "build", "index.html"))
    })
}


app.listen(PORT);

module.exports = app

package. json:

{
  "name": "name",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon app.js",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  }
  }
}

Кто-нибудь знаете, как это исправить?

-Спасибо тонну

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Думаю, вам нужно написать это на своей упаковке. json вот так:

{
  "name": "name",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "engines": {
    "node": "12.13.0",
    "npm": "6.14.4"
  },
  "scripts": {
    "start": "nodemon app.js",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  }
}

Replace node and npm with what you need and the same version you have in local.

0 голосов
/ 07 мая 2020

Возможно, вместо этого попробуйте res.sendFile(path.resolve(__dirname, "client", "build", "index.html")), потому что использование __dirname переходит в основной каталог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...