【问题标题】:Parcel renders a 404 pageParcel 呈现 404 页面
【发布时间】:2021-11-26 23:56:21
【问题描述】:

我有一个 typescript 项目,我正在从 react-script 迁移到 parcel。

但是运行parcel后,项目构建了,但是url呈现404 page not found html...

这里是配置文件:

package.json:

{
  "name": "my-project",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@blueprintjs/core": "^3.45.0",
    "@emotion/react": "^11.4.0",
    "@emotion/styled": "^11.3.0",
    "@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": "^16.9.3",
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "@types/react-router-dom": "^5.1.7",
    "axios": "^0.21.4",
    "cross-env": "^7.0.3",
    "dotenv": "^10.0.0",
    "pullstate": "^1.22.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-router-dom": "^5.2.0",
    "reselect": "^4.0.0",
    "spinners-react": "^1.0.4",
    "ts-loader": "^9.2.6",
    "typescript": "^4.4.3",
    "use-axios-client": "^2.0.0",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
    "start": "cross-env NODE_ENV=local parcel ./src/index.tsx -p 3000",
    "build": "parcel build"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "devDependencies": {
    "@babel/core": "latest",
    "@babel/preset-env": "^7.12.7",
    "@babel/preset-typescript": "latest",
    "@parcel/transformer-inline-string": "2.0.0-rc.0",
    "@parcel/transformer-svg-react": "^2.0.0-nightly.1739",
    "@parcel/config-default": "latest",
    "css-loader": "^6.3.0",
    "file-loader": "^6.2.0",
    "parcel": "^2.0.0-rc.0",
    "prettier": "2.3.1"
  }
}

tsconfig.json :

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "strict": true,
    "noImplicitReturns": true,
    "noImplicitAny": true,
    "module": "es6",
    "moduleResolution": "node",
    "target": "es5",
    "allowJs": true,
    "jsx": "react",
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true
  },
  "include": [
    "./src/**/*"
  ],
  "exclude": [
    "dist",
    "node_modules"
  ],
}

.parcelrc:

{
    "extends": "@parcel/config-default",
    "transformers": {
      "bundle-text:*": ["...", "@parcel/transformer-inline-string"],
      "jsx:*.svg": ["...", "@parcel/transformer-svg-react"]
    }
}

由于我是构建工具的新手 - 以及包裹,我不确定我在这里做错了什么......

【问题讨论】:

    标签: typescript parceljs


    【解决方案1】:

    您的start 脚本应直接针对您要提供的.html 文件,而不是直接定位.ts 文件。 Parcel 的工作方式与 webpack 之类的打包程序有点不同,因为它可以直接解析来自 html 的依赖项。

    所以你的start 脚本看起来像这样:

    cross-env NODE_ENV=local parcel ./src/index.html -p 3000
    

    ...你的 index.html 文件会有这样的一行:

    <script type="module" src="index.tsx"></script>
    

    this example in the getting started docs

    【讨论】:

    • 我也试过了,虽然它确实修复了 404 page not found 问题,但它呈现一个空白页面并且不存在源。尝试后我应该编辑我的问题。我没有带有反应脚本的空白页面。无论如何,我会接受你的回答。
    • 有几件事可能导致 - 当您看到空白页时是否有任何控制台输出?作为第一步,我建议关注parcel + react getting started instructions。如果你可以在 github 上分享一个 repro,我也很乐意看看。
    • 是的,有一个 repo,github.com/CrommVardek/polk-auction-ui/tree/parcel-migration。如果你能看一看,我将不胜感激。但由于我花了太多时间尝试使用 parcel,我可能会暂时坚持使用 react-scripts,直到我有一个正常运行的 UI。但是,如果您设法找到原因,请随时打开 PR 或打开问题。
    • 我在this pull request 中修复了几层问题 - 详细信息在那里。希望有帮助!
    猜你喜欢
    • 2019-07-04
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2021-11-28
    • 2015-01-03
    相关资源
    最近更新 更多