如何更改创建反应应用程序的基本网址?

HnM*_*M97 9 reactjs create-react-app react-router-dom

我正在使用react-router-dom和create-react-app。

运行脚本yarn start,它以http://localhost:3000/(myprojectname),而不是开头http://localhost:3000/

当使用react-router-dom进行路由时,我必须myprojectname从url中删除,然后添加页面路由。

项目的初始设置好像有问题,

我该如何开始http://localhost:3000/


添加package.json、路由器代码。

包.json:

{
  "name": "cau-burger-online-order-system",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "@types/jest": "^26.0.15",
    "@types/node": "^12.0.0",
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "@types/react-router-dom": "^5.3.2",
    "@types/styled-components": "^5.1.16",
    "axios": "^0.24.0",
    "bootstrap": "^5.1.3",
    "brace-expansion": "^2.0.1",
    "gh-pages": "^3.2.3",
    "prettier": "^2.5.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "5.3.0",
    "react-scripts": "4.0.3",
    "styled-components": "^5.3.3",
    "typescript": "^4.1.2",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d build"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "homepage": "https://myprojectname"
}
Run Code Online (Sandbox Code Playgroud)

应用程序.tsx:

import '../node_modules/bootstrap/dist/css/bootstrap.min.css'
import './App.css'

import { Route, BrowserRouter as Router, Switch } from 'react-router-dom'

import Detail from 'pages/detail/Detail'
import GlobalStyle from './GlobalStyle'
import Home from 'pages/home/Home'
import Login from 'pages/login'
import Signup from 'pages/signup'

function App() {
  return (
    <Router>
      <GlobalStyle />
      <div className="App">
        <div className="auth-wrapper">
          <Switch>
            <Route exact path="/" component={Login} />
            <Route path="/login" component={Login} />
            <Route path="/signup" component={Signup} />
            <Route path="/home" component={Home} />
            <Route path="/detail" component={Detail} />
          </Switch>
        </div>
      </div>
    </Router>
  )
}

export default App
Run Code Online (Sandbox Code Playgroud)

Dre*_*ese 12

package.json文件中将条目更改homepage为相对路径,不包括任何子域/嵌套目录。

{
  "name": "cau-burger-online-order-system",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    ....
  },
  "scripts": {
    ...
  },
  ...,
  "homepage": "https://hy57in.github.io/2021-Industry-Hands-On-Project"
}
Run Code Online (Sandbox Code Playgroud)

{
  "name": "cau-burger-online-order-system",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    ...
  },
  "scripts": {
    ...
  },
  ...,
  "homepage": "./"
}
Run Code Online (Sandbox Code Playgroud)


小智 6

您只需要做两件事来更改 ReactRouterDom dom 的基本 Url。当您在 github 页面等网站上托管网站时,或者在 Https://website.com/mywebsite 等 url 或子链接上托管网站时,它非常有用。

首先 - 您必须添加一个属性,例如 -

<BrowserRouter basename='/mywebsite'>

或者打开 package.json 并添加 Before build your project for production

"homepage": "/your-subdirectory",
Run Code Online (Sandbox Code Playgroud)

对于我的情况:

"homepage": "/mywebsite",
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助,请随时询问您是否陷入困境。