postcss-svgo: TypeError: Cannot set property 'multipassCount' of undefined (Gatsby)

postcss-svgo: TypeError: Cannot set property 'multipassCount' of undefined (Gatsby)

在 Gatsby 2.17.6 项目中,构建时:

Building production JavaScript and CSS bundles [====
] 1.940 s 1/6 17% run queries failed Building production JavaScript and CSS bundles - 75.519s

ERROR #98123 WEBPACK

Generating JavaScript bundles failed

postcss-svgo: TypeError: Cannot set property 'multipassCount' of undefined

not finished run queries - 77.639s npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! gatsby-starter-default@1.0.0 build: node node_modules/gatsby/dist/bin/gatsby.js build` npm ERR! Exit status 1

这些是我的一些依赖项:

"dependencies": {
    "babel-plugin-styled-components": "^1.8.0",
    :
    "gatsby": "^2.0.19",
    "gatsby-plugin-favicon": "^3.1.4",
    "gatsby-plugin-google-fonts": "0.0.4",
    "gatsby-plugin-offline": "^2.0.5",
    "gatsby-plugin-react-helmet": "^3.0.0",
    "gatsby-plugin-styled-components": "^3.0.1",
    :
    "react": "^16.5.1",
    "react-dom": "^16.5.1",
    "react-helmet": "^5.2.0",
    "react-leaflet": "^2.1.1",
    "styled-components": "^4.1.1"
  }

我没有在 gatsby 上看到任何关于 postcss 的配置-config.js,我猜这是 Gatsby 的默认行为。 npm ls postcss-svgo 抛出这个:

gatsby-starter-default@1.0.0 /<app>/source
└─┬ gatsby@2.17.6
  └─┬ optimize-css-assets-webpack-plugin@5.0.3
    └─┬ cssnano@4.1.10
      └─┬ cssnano-preset-default@4.0.7
        └── postcss-svgo@4.0.2 

如果这是一个解决方案,我不介意禁用 postcss-svgo,但我不知道如何。

我的项目解决了,使用npm install svgo@1.3.0 -E,详情见:https://github.com/svg/svgo/issues/1174

"resolutions": { "svgo": "1.3.0" }

将以上内容添加到您的 "package.json",然后 rm -rf node_modules 删除 "node_modules",然后再次重新安装 "node_modules"。

这将解决问题。 此问题与最新版本的 postcss-svgo 有关。

svgo 1.3.2版本已经发布,this bug is suposed to be fixed

所以,删除你的 node_modules 目录和 package-lock.json 文件就足够了,然后创建一个新的 npm install纱线安装

无论如何,感谢其他用户建议将 svgo 回滚到 1.3.0

有效。

  • $ npm 安装-g svgo
  • 删除 node_modules 并打包-lock.json
  • $ npm 安装
  • 构建项目