Как развернуть приложение MERN, я получил «не могу получить /» - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь развернуть приложение MERN в Azure, но когда я проверяю свой URL, у меня не получается ошибка cannot get /.

Я попытался запустить сервер узлов на локальном компьютере в рабочей среде, и у меня просто пустая страница.

Я пытаюсь проверить, нет ли проблемы с путями в моем коде, поэтому в server.js у меня console.log(path.resolve(__dirname, '../client/build')); на моем локальном компьютере, он показывает мне правильный путь, но на лазуре это результат undefined, поэтому я предполагаю на лазурном Я не могу использовать __dirname

Мое дерево приложений выглядит так:

|--client
   |--build
|--node_modules
|--server
   |--server.js
|--package.json

Мой server.js

const dotenv = require('dotenv');
dotenv.config();
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const app = express();
const passport = require("passport");
const path = require('path');
const users = require("./routes/api/users");
// Bodyparser middleware
app.use(
   bodyParser.urlencoded({
        extended: false
    })
);
app.use(bodyParser.json());

// DB Config
const db = require("./config/key.js").mongoURI;
console.log(db);
// Connect to MongoDB
mongoose.Promise = global.Promise;
mongoose.connect(db, { useNewUrlParser: true })
   .then(() => console.log("MongoDB successfully connected"))
   .catch(err => console.log(err));

// Passport middleware
app.use(passport.initialize());
// Passport config
require("./config/passport")(passport);
// Routes
app.use("/api/users", users);

// Serve static assets if in production
if (process.env.NODE_ENV === 'production') {
    // Set static fold
    console.log(path.resolve(__dirname, '../client/build'));
    app.use(__dirname, express.static('../client/build'));

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

const port = process.env.PORT || 5000;
app.listen(port, () => console.log('Server up and running on port 
${port} !'));

Если честно, я не знаю, чего ожидать.

Когда я работаю на локальном компьютере, у меня запущен сервер node-js и тоже запущен сервер реакции.

Когда я пытаюсь выполнить поиск по развертыванию, я могу найти только учебник, который объясняет «скопируйте, вставьте это, и оно будет работать», но я понятия не имею, как это работает?

При всех моих поисках, я думаю, мне нужно запустить сервер узлов, и он будет рендерить мой интерфейс из index.html из моего репозитория сборки, тогда почему на лазури я получил cannot get /?

## РЕДАКТИРОВАНИЕ ##

На самом деле проблема заключалась в том, что Azure не запускает мой server.js в производственном режиме, поэтому мое состояние никогда не нарушалось.

У меня больше нет этого cannot get /, и у меня такая же проблема в локальной сети, у меня пустая страница. Если я открываю инспектор, я вижу, что это мой index.html, и я могу в консоли, у меня есть эта ошибка Uncaught SyntaxError: неожиданный токен

Может ли это быть причиной пустой страницы?

...