GatsbyJS 博客在 "npm update" 后不再编译?

GatsbyJS blog not compiling anymore after "npm update"?

如果是 Gatsby、webpack 或 npm 问题我还不明白。

我在终端中执行了这些命令,它们似乎引发了问题,试图修复一个 material-ui "Popper" 模块,该模块有 "could not find module" 错误。

npm install react-popper@next --save    
npm install avj    
npm install --save-dev webpack    
npm install & npm update

航站楼:

error There was a problem loading the local develop command. Gatsby may not be installed. Perhaps you need to run "npm install"?

Error: Cannot find module 'webpack/lib/removeAndDo'

package.json

{
  "name": "auto-club-reviews",
  "description": "Auto Club Reviews Blog",
  "version": "1.0.0",
  "author": "Sofianu Alin",
  "dependencies": {
    "@material-ui/core": "^1.4.3",
    "@material-ui/icons": "^1.1.0",
    "gatsby": "^1.9.277",
    "gatsby-link": "^1.6.46",
    "gatsby-plugin-feed": "^1.3.25",
    "gatsby-plugin-google-analytics": "^1.0.31",
    "gatsby-plugin-offline": "^1.0.18",
    "gatsby-plugin-react-helmet": "^2.0.11",
    "gatsby-plugin-react-next": "^1.0.11",
    "gatsby-plugin-sharp": "^1.6.48",
    "gatsby-plugin-typography": "^1.7.19",
    "gatsby-remark-copy-linked-files": "^1.5.37",
    "gatsby-remark-images": "^1.5.67",
    "gatsby-remark-responsive-iframe": "^1.4.20",
    "gatsby-remark-smartypants": "^1.4.12",
    "gatsby-source-contentful": "^1.3.54",
    "gatsby-source-filesystem": "^1.5.39",
    "gatsby-transformer-remark": "^1.7.44",
    "gatsby-transformer-sharp": "^1.6.27",
    "lodash": "^4.17.10",
    "react": "^16.4.2",
    "react-dom": "^16.4.2",
    "react-helmet": "^5.2.0",
    "react-hover": "^1.3.2",
    "react-popper": "^1.0.2",
    "typeface-roboto": "0.0.54"
  },
  "devDependencies": {
    "eslint": "^5.3.0",
    "eslint-plugin-react": "^7.10.0",
    "gh-pages": "^1.2.0",
    "html-webpack-plugin": "^3.2.0",
    "prettier": "^1.14.2",
    "webpack": "^4.16.5",
    "webpack-command": "^0.4.1",
    "webpack-dev-middleware": "^3.1.3",
    "webpack-dev-server": "^3.1.5"
  },
  "homepage": "https://github.com/gatsbyjs/gatsby-starter-blog#readme",
  "keywords": [
    "gatsby"
  ],
  "license": "MIT",
  "main": "n/a",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/gatsbyjs/gatsby-starter-blog.git"
  },
  "scripts": {
    "dev": "gatsby develop",
    "lint": "./node_modules/.bin/eslint --ext .js,.jsx --ignore-pattern public .",
    "test": "echo \"Error: no test specified\" && exit 1",
    "format": "prettier --trailing-comma es5 --no-semi --single-quote --write 'src/**/*.js' 'src/**/*.md'",
    "develop": "gatsby develop",
    "build": "gatsby build",
    "deploy": "gatsby build --prefix-paths && gh-pages -d public",
    "fix-semi": "eslint --quiet --ignore-pattern node_modules --ignore-pattern public --parser babel-eslint --no-eslintrc --rule '{\"semi\": [2, \"never\"], \"no-extra-semi\": [2]}' --fix gatsby-node.js"
  }
}

也尝试过:

删除node_modules然后npm安装;

卸载 "webpack-cli": "^3.1.0" 并安装 webpack-commander;

卸载 extract-text-webpack-plugin 似乎在终端中被抱怨;

同志们有什么想法吗?

您是否尝试过 Gatsby v2?您的 package.json 显示 React v16,它是 Gatsby v2 的 peerDependency,但不是 Gatsby v1。在 Gatsby v1(这是你在 package.json 中拥有的)你不应该直接安装 React,它是作为 Gatsby 的依赖项安装的。

Webpack 也是(v1 和 v2)Gatsby 的依赖项。我认为您不应该将它作为顶级依赖项放在 package.json 中。

我建议从一个干净的 Gatsby 启动器开始,然后将您的 gatsby-node.jsgatsby-config.js、组件、内容等复制到该项目中。离开 package.json 文件。然后 运行 npm install --save 对于您明确 importrequire 的每个包。希望这能让您回到工作站点。

旁注,就我个人而言,我还建议 yarn 而不是 npm

Gatsby clean-cache

然后删除节点模块

然后

yarn start/npm install