0

我有一个问题,当网站被加载时,URL 会被更改,如果您尝试共享它,则会导致 URL 不正确。否则该站点加载正常,但随后更改为不正确的 URL

例如,该站点位于域上的某些子文件夹(“en-us/site”)中,如果您在博客页面上,则如下所示:www.example.com/en-us/site/blog/. 因此,如果您转到该 URL,页面将正常加载,但在地址栏中加载 URL 后将更改为www.example.com/blog/

只有当开发人员意外更新 NPM 中的依赖项时,这才会成为一个问题。我已将其缩小为对 Gatsby 的更新。不幸的是,对于哪个版本是罪魁祸首,以及如何解决它,存在太多可能性。我们从 Gatsby 2.4.6版升级到2.30.1版,所以问题出现在这两者之间。

是否有人对可能导致此 URL 更改的原因有任何提示?

我们工作时的依赖列表如下所示。导致该问题的唯一区别是对 gatsby 包的更新。我不确定哪个特定版本会引发问题,因为尝试每一个都需要很长时间,但是转到 2.30.1 肯定会导致问题。

  "dependencies": {
    "classnames": "^2.2.6",
    "esm": "^3.2.25",
    "gatsby": "^2.20.2",
    "gatsby-plugin-react-helmet": "^3.1.15",
    "gatsby-plugin-sass": "^2.3.12",
    "gatsby-plugin-sitemap": "^2.3.5",
    "gatsby-source-filesystem": "^2.1.10",
    "gatsby-transformer-json": "^2.2.26",
    "jquery": "^3.4.1",
    "node-sass": "^4.14.1",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-helmet": "^5.2.1",
    "react-transition-group": "^4.4.1",
    "webpack": "^4.31.0"
  },
  "devDependencies": {
    "@hot-loader/react-dom": "^16.10.2",
    "@typescript-eslint/eslint-plugin": "^2.31.0",
    "@typescript-eslint/parser": "^2.31.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.8.0",
    "eslint-config-react-app": "^5.2.1",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-flowtype": "^4.7.0",
    "eslint-plugin-import": "^2.20.2",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-react": "^7.19.0",
    "eslint-plugin-react-hooks": "^2.5.1",
    "gatsby-disable-404": "^0.2.1",
    "gatsby-plugin-eslint": "^2.0.8",
    "prettier": "^1.17.1"
  },

gatsby -config.js 中的siteUrl 正确设置https://www.example.com/en-us/site为 URL,assetPrefix设置为/en-us/site.

我已将其范围缩小到只是对gatsby包的更新会导致问题。此外,该问题似乎只能在我们的登台和生产服务器上重现。我无法使用本地服务器设置在本地进行复制。

我们可以继续使用旧版本,但我不想冒这个问题的风险,以防它再次意外发生(通过流氓包锁定文件)并且宁愿只获得最新版本。

4

0 回答 0