MERN tidak dapat diterapkan ke heroku

Saya mencoba merender aplikasi React saya melalui NodeJS dan menerapkannya di Heroku. tapi sepertinya saya mengalami masalah ini di browser

SyntaxError Tak Tertangkap: Token tak terduga '‹'

dan halaman tersebut adalah halaman putih kosong.

Saya mencoba banyak solusi tetapi sepertinya saya tidak tahu apa yang salah dan mengapa beranda tidak muncul.

Package.json saya di NodeJS


{
  "name": "portfolio-app",
  "version": "1.0.0",
  "description": "a simple app",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "heroku-postbuild": "cd client && npm install && npm install --only=dev --no-shrinkwrap && npm run build",
    "start": "node app.js",
    "client": "cd client && npm run start",
    "dev": "concurrently -n 'server,client' -c 'red,green'  \"nodemon app.js\" \"npm run client\""
  },

  "dependencies": {
    "body-parser": "^1.19.0",
    "concurrently": "^5.2.0",
    "create-react-app": "^3.4.1",
    "express": "^4.17.1",
    "mongoose": "^5.9.6",
    "nodemon": "^2.0.2"
  },
  "engines": {
    "node": "10.x"
  }
}


package.json saya di Aplikasi React

{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "history": "^4.10.1",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.1"
  },
  "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:8080"
}

file server app.js saya:

const express    = require('express'),
      app        = express(),
      bodyParser = require('body-parser'),
      nav        = require('./routes/navigation'),
      path       = require('path'),
      PORT       = process.env.PORT || 8080;

/* Settings */
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static(__dirname + '/public'));



/*Production settings*/
if(process.env.NODE_ENV === "production"){
  app.use(express.static(path.join(__dirname, 'client/build')));

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



/* Starting server */ 
app.listen(PORT, () => {
  console.log(`APP IS RUNNING ON PORT  ${PORT}`);
});

person Ahmed Gaafer    schedule 09.05.2020    source sumber
comment
Masalahnya kemungkinan besar adalah kesalahan ketik pada aplikasi reaksi Anda. Carilah komponen atau sesuatu dengan ‹ yang tidak tertutup.   -  person justin    schedule 09.05.2020


Jawaban (2)


Setelah meneliti, saya menemukan bahwa masalahnya ada pada pembuat Heroku, jadi saya menambahkan pembuat ini ke aplikasi Heroku:

https://elements.heroku.com/buildpacks/mars/create-react-app-buildpack

dan masalahnya terpecahkan.

person Ahmed Gaafer    schedule 09.05.2020

Saya pikir masalah dengan Heroku dan saya lebih suka memisahkan backend dan frontend dengan mendorong aplikasi reaksi Anda ke netlify dan backend node Anda ke heroku

person ahmed khaled    schedule 09.05.2020