Приложение Parcel / React работает на локальном хосте, но не на сервере

У меня есть приложение Parcel / React, которое я пытаюсь запустить в производство. После тестирования я вижу, что моя навигация больше не работает на сервере (404).

Я использую React Router так:

<Suspense fallback={<div>Loading...</div>}>
  <Router primary={false}>
  <Home path="/" />
  <About path="/about" />
  <Portfolio path="work" />
  <Contact path="/contact" />
  </Router>
</Suspense>

Я добавил домашнюю страницу в свой package.json, как было предложено в другом потоке, но все равно не повезло.

"homepage": "."

У меня нет опыта работы с диспетчером IIS или чем-либо в этом роде, поэтому я не решаюсь вносить какие-либо изменения на сервере, тем более что у меня есть другие веб-сайты на том же сервере.

Есть ли что-нибудь, что можно сделать в коде / сборке, чтобы эта работа работала на сервере, или это потребует изменений в IIS?

Вот мой package.json:

    {
  "name": "ericbelldesigns",
  "version": "1.0.0",
  "description": "Eric Bell Designs 2020",
  "main": "src/App.js",
  "dependencies": {
    "@frontendmasters/pet": "^1.0.3",
    "@reach/router": "^1.3.1",
    "anime": "^0.1.2",
    "axios": "^0.19.2",
    "bezier-easing": "^2.1.0",
    "charming": "^3.0.1",
    "gsap": "^2.1.3",
    "gsap-react-plugin": "^1.0.2",
    "imagesloaded": "^4.1.4",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-router-dom": "^5.1.2",
    "three": "^0.106.2",
    "three-obj-loader": "^1.1.3",
    "three-orbit-controls": "^82.1.0"
  },
  "browserslist": [
    "last 2 Chrome versions",
    "last 2 ChromeAndroid versions",
    "last 2 Firefox versions",
    "last 2 FirefoxAndroid versions",
    "last 2 Safari versions",
    "last 2 iOS versions",
    "last 2 Edge versions",
    "last 2 Opera versions",
    "last 2 OperaMobile versions"
  ],
  "devDependencies": {
    "@babel/core": "^7.8.4",
    "@babel/plugin-proposal-class-properties": "^7.8.3",
    "@babel/preset-env": "^7.8.4",
    "@babel/preset-react": "^7.8.3",
    "animejs": "^3.1.0",
    "babel-eslint": "^10.0.3",
    "cross-env": "^5.2.1",
    "eslint": "^5.16.0",
    "eslint-config-prettier": "^4.3.0",
    "eslint-plugin-import": "^2.20.1",
    "eslint-plugin-jsx-a11y": "^6.2.0",
    "eslint-plugin-react": "^7.18.3",
    "eslint-plugin-react-hooks": "^1.6.1",
    "parcel-bundler": "^1.12.4",
    "parcel-plugin-html-externals": "^0.1.2",
    "postcss-modules": "^1.5.0",
    "prettier": "^1.19.1",
    "sass": "^1.26.0",
    "threejs-controls": "^1.0.6"
  },
  "scripts": {
    "dev": "parcel src/index.html",
    "dev:mock": "cross-env PET_MOCK=mock npm run dev",
    "format": "prettier --write \"src/**/*.{js,jsx}\"",
    "lint": "eslint \"src/**/*.{js,jsx}\" --quiet",
    "test": "echo \"Error: no test specified\" && exit 1",
    "production": "parcel build src/index.html"
  },
  "externals": {
    "/images/**/*": false
  },
  "author": "Eric Bell <[email protected]>",
  "license": "Apache-2.0",
  "keywords": []
}

person EricBellDesigns    schedule 25.02.2020    source источник


Ответы (1)


Если вы импортировали BrowserRouter, измените его на HashRouter и посмотрите, поможет ли это.

person Mohamed Wagih    schedule 25.02.2020
comment
Я не импортировал ни BrowserRouter, ни HashRouter. - person EricBellDesigns; 25.02.2020
comment
Разве вы не используете псевдоним для BrowserRouter? Я имею в виду эту строку: import {BrowserRouter as Router} from response-router-dom ;? - person Mohamed Wagih; 25.02.2020
comment
Я использовал: import {Router} from '@reach / router'; - person EricBellDesigns; 25.02.2020
comment
Вы используете маршрутизатор Reach, а не маршрутизатор React. Я предлагаю обновить ваш вопрос этой информацией. Кроме того, попробуйте использовать React Router, поскольку тот, который вы использовали, является просто простой версией реальной вещи, если, конечно, нет каких-либо ограничений, которым вы следуете. - person Mohamed Wagih; 25.02.2020
comment
Да, ты прав. Это моя ошибка. Я собираюсь попробовать React Router сейчас по вашему предложению. Спасибо за ваше время и помощь. - person EricBellDesigns; 25.02.2020
comment
У меня на сервере работает BrowserRouter. Спасибо за помощь! - person EricBellDesigns; 26.02.2020