autoprefixer: Package exports for '...\autoprefixer\node_modules\kleur' do not define a valid './colors' target in version 9.8.1

Since the update to 9.8.1 I get hundreds of errors while compiling my Webpack project:

ERROR in ./ts/ui/Tabbar/TabbarButton/styles.scss (../node_modules/dts-css-modules-loader??ref--7-1!../node_modules/css-loader/dist/cjs.js??ref--7-2!../node_modules/postcss-loader/src??ref--7-3!../node_modules/sass-loader/dist/cjs.js??ref--7-4!./ts/ui/Tabbar/TabbarButton/styles.scss)
Module build failed (from ../node_modules/postcss-loader/src/index.js):
Error: Package exports for 'P:\HexEd.it\node_modules\autoprefixer\node_modules\kleur' do not define a valid './colors' target
    at resolveExportsTarget (internal/modules/cjs/loader.js:621:9)
    at applyExports (internal/modules/cjs/loader.js:502:14)
    at resolveExports (internal/modules/cjs/loader.js:551:12)
    at Function.Module._findPath (internal/modules/cjs/loader.js:657:22)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:960:27)
    at Function.Module._load (internal/modules/cjs/loader.js:855:27)
    at Module.require (internal/modules/cjs/loader.js:1033:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (P:\HexEd.it\node_modules\autoprefixer\lib\autoprefixer.js:9:13)
    at Module._compile (internal/modules/cjs/loader.js:1144:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1164:10)
    at Module.load (internal/modules/cjs/loader.js:993:32)
    at Function.Module._load (internal/modules/cjs/loader.js:892:14)
    at Module.require (internal/modules/cjs/loader.js:1033:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (P:\HexEd.it\postcss.config.js:4:3)

Maybe I should note, that I’m using CSS variables for colors:

color: var(--hexedit-tabbar-tab-foreground);

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 5
  • Comments: 19 (16 by maintainers)

Commits related to this issue

Most upvoted comments

It looks like I am able to work around this issue in a project created today with create-react-app by downgrading autoprefixer:

npm install autoprefixer@9.8.0

engines update released at 9.8.2.

Yeap, I will block only the old Node.js 13 versions

@gragland No, I wouldn’t say that.

CRA installs autoprefixer@9.7.4 by default:

$ pnpx create-react-app my-app
$ cd my-app && yarn why autoprefixer
=> Found "autoprefixer@9.7.4"
info Reasons this module exists
   - "react-scripts#postcss-preset-env" depends on it
   - Hoisted from "react-scripts#postcss-preset-env#autoprefixer"
info Disk size without dependencies: "588KB"
info Disk size with unique dependencies: "5.17MB"
info Disk size with transitive dependencies: "6.79MB"
info Number of shared dependencies: 22

In order to even get 9.8.1 loaded into the toolchain, I’ve been needing to eject and manually define autoprefixer@9.8.1 as a dependency, then reinstall everything. So, that takes care of “CRA” concerns.

Moving onto Node questions (for when someone gets an updated copy of any dependency that has a future-proof conditional exports map), here’s the landscape:

I ran through each of these versions and tested them with CRA

⚠️ – Shows ExperimentalWarning message ✅ – Supported, builds successfully ❌ – Unsupported, build fails

Make of that what you will, but to me that’s what a new experimental feature looks like. And Node.js, for many years, has always preaches that odd-major releases are experimental and always are immediately “End of Life” with a short exit period once its even, LTS counterpart is released.