parcel-bundler / parcel

The zero configuration build tool for the web. πŸ“¦πŸš€
https://parceljs.org
MIT License
43.41k stars 2.26k forks source link

Building fails when importing .less file from .tsx file with browserslist enabled #9801

Open mroloux opened 3 months ago

mroloux commented 3 months ago

πŸ› bug report

Building fails when importing a .less file from a .tsx file, with browserslist configured to support Android UC (or QQ browser). The default browserslist setting as of June 2024 has support for those browsers.

Error: Expected content key f9dfd8f407ec5b22 to exist

Here's a repository that reproduces the issue: https://github.com/mroloux/parcel-less-import-react-bug

πŸŽ› Configuration (.babelrc, package.json, cli command)

{
  "devDependencies": {
    "@parcel/transformer-less": "2.12.0",
    "parcel": "2.12.0"
  },
  "dependencies": {
    "preact": "10.19.3",
    "react-dom": "18.2.0",
    "typescript": "5.4.5"
  },
  "browserslist": ["and_uc < 15.6"]
}

πŸ€” Expected Behavior

Build should succeed

😯 Current Behavior

Build fails:

🚨 Build failed.

Error: Expected content key f9dfd8f407ec5b22 to exist

  Error: Expected content key f9dfd8f407ec5b22 to exist
      at nullthrows (/Users/mroloux/dev/parcel-less-import-react/node_modules/nullthrows/nullthrows.js:7:15)
      at AssetGraph.getNodeIdByContentKey (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/graph/lib/ContentGraph.js:67:38)
      at /Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/SymbolPropagation.js:52:82
      at Array.map (<anonymous>)
      at propagateSymbols (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/SymbolPropagation.js:52:61)
      at AssetGraphBuilder.build (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/requests/AssetGraphRequest.js:174:62)
      at async Object.run (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/requests/AssetGraphRequest.js:62:37)
      at async RequestTracker.runRequest (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/RequestTracker.js:673:20)
      at async Object.run (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/requests/BundleGraphRequest.js:106:11)
      at async RequestTracker.runRequest (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/RequestTracker.js:673:20)

Error: Does not have node 45
    at AssetGraph._assertHasNodeId (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/graph/lib/Graph.js:449:13)
    at AssetGraph.getNodeIdsConnectedFrom (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/graph/lib/Graph.js:81:10)
    at visitChildren (/Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/requests/AssetGraphRequest.js:148:47)
    at /Users/mroloux/dev/parcel-less-import-react/node_modules/@parcel/core/lib/requests/AssetGraphRequest.js:144:67
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

πŸ’» Code Sample

https://github.com/mroloux/parcel-less-import-react-bug

Soecka commented 2 months ago

I'm getting a similar error while parcel build

 "clean": "rm -rf .parcel-cache/ dist/"
"npm run clean  &&  parcel build src/index.html --public-url "  βœ… 
 "npm run clean  &&  parcel src/index.html" ❌ 
// In xxx.module.less (build failed) ❌ 
// In xxx.less (build success) βœ… 
border: 1px solid;
border-image: url('../image/gradient-hr.svg') !important;
🚨 Build failed.

Error: Expected content key d4a513f29ad2af27 to exist