Attached debdiff node-cheerio_1.2.0+~cs2.1.0-2ubuntu1.debdiff against 1.2.0+~cs2.1.0-2.
** Patch removed: "node-cheerio 1.2.0+~cs2.1.0-2ubuntu1 debdiff for stonking" https://bugs.launchpad.net/ubuntu/+source/node-cheerio/+bug/2169270/+attachment/6005134/+files/node-cheerio_1.2.0+~cs2.1.0-2ubuntu1.debdiff ** Patch added: "node-cheerio 1.2.0+~cs2.1.0-2ubuntu1 debdiff for stonking" https://bugs.launchpad.net/ubuntu/+source/node-cheerio/+bug/2169270/+attachment/6005147/+files/node-cheerio_1.2.0+~cs2.1.0-2ubuntu1.debdiff ** Description changed: [ Impact ] node-cheerio 1.2.0+~cs2.1.0-2 in stonking-proposed cannot be loaded via require(), failing with ERR_PACKAGE_PATH_NOT_EXPORTED. This causes an autopkgtest regression in eslint (6.4.0~dfsg+~6.1.9-13) and blocks node-cheerio from migrating into stonking. Because node-cheerio is blocked, node-parse5 (8.0.1+dfsg-3build3) is also held in proposed (it breaks node-cheerio << 1.2~), which in turn blocks node-jsdom and renders multiple packages (jest, ts-jest, jupyterlab, node-jupyter-widgets-*, etc.) uninstallable. [ Fix ] In debian/patches/debian-build-adjustments.patch, revert the hunk that stripped the "require" export conditions from package.json and restricted tshy to "dialects": ["esm"]. This allows tshy to build dist/commonjs alongside dist/esm, restoring full CommonJS compatibility as intended by upstream cheerio 1.2.0. Also add .tshy/ to debian/clean to ensure reproducible clean builds. [ Test Plan ] 1. Direct CommonJS require test: $ node -e 'const cheerio = require("cheerio"); console.log(cheerio.load("<h2 class=\"title\">Hello</h2>")("h2.title").text())' Expected output: "Hello" (exit code 0). 2. cheerio-select require test: $ node -e 'require("cheerio-select")' Expected: exits 0 without error. 3. eslint autopkgtest test case: $ NODE_PATH=tools eslint --format tap tests/lib/cli-engine/formatters/html.js Expected output: ok 1 (passes cleanly; was failing before with ruleId: node/no-missing-require). $ mocha tests/lib/cli-engine/formatters/html.js Expected output: 11 passing. [ Where problems could occur ] The fix restores the upstream-supported CommonJS build (dist/commonjs). The ESM build in dist/esm and browser build in dist/browser remain completely unchanged. Since this broadens export conditions rather than restricting them, the risk of regression is negligible. [ Other Info ] - Upstream status: Upstream cheerio 1.2.0 is built with tshy and natively supports both ESM and CommonJS exports. - - Debian status: In Debian unstable, the maintainer treated cheerio as ESM-only and uploaded eslint 6.4.0~dfsg+~6.1.9-14 (adapting its test to dynamic import()) and node-cheerio 1.2.0+~cs2.1.0-3 (with Breaks: eslint << 6.4.0~dfsg+~6.1.9-14~). However, because stonking reached Debian Import Freeze, those packages never synced to Ubuntu. Restoring CommonJS in node-cheerio is strictly better as it preserves backward compatibility for all CommonJS consumers without requiring changes to reverse dependencies. + - Debian status: Forwarded to Debian BTS as #1149801 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1149801). In Debian unstable, the maintainer previously treated cheerio as ESM-only and uploaded eslint 6.4.0~dfsg+~6.1.9-14 (adapting its test to dynamic import()) and node-cheerio 1.2.0+~cs2.1.0-3 (with Breaks: eslint << 6.4.0~dfsg+~6.1.9-14~). However, because stonking reached Debian Import Freeze, those packages never synced to Ubuntu. Restoring CommonJS in node-cheerio is strictly better as it preserves backward compatibility for all CommonJS consumers without requiring changes to reverse dependencies. - Target: Ubuntu 26.10 (stonking devel). - Package builds cleanly, debdiff has 0 rejects. --- [ Original Report ] node-cheerio 1.2.0+~cs2.1.0-2 in stonking-proposed cannot be loaded with require(), which breaks CommonJS consumers. This blocks node-cheerio from migrating and, through it, node-parse5 and node-jsdom. Symptom: the eslint autopkgtest fails on every architecture (amd64, amd64v3, arm64, armhf, ppc64el) when triggered by node-cheerio/1.2.0+~cs2.1.0-2: not ok 381 - tests/lib/cli-engine/formatters/html.js message: '"cheerio" is not found.' ruleId: node/no-missing-require https://autopkgtest.ubuntu.com/results/autopkgtest-stonking/stonking/amd64/e/eslint/20260928_111538_1192f@/log.gz Reproducer (Node 24.19, stonking-proposed): $ node -e 'require("cheerio")' Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in /usr/share/nodejs/cheerio/package.json Cause: upstream cheerio 1.2.0 is a dual CJS and ESM package built with tshy, and its exports include "require": { "types": "./dist/commonjs/index.d.ts", "default": "./dist/commonjs/index.js" } debian/patches/debian-build-adjustments.patch removes the "require" conditions for ".", "./slim" and "./utils" and sets the tshy "dialects" to ["esm"]. The binary package therefore ships only dist/esm and dist/browser, with no dist/commonjs. None of the other changes in that patch (TypeScript 5.2 compatibility, the cheerio-select adapter fix, dropping fromURL/loadBuffer/stream helpers) appear to need ESM-only output. Impact on proposed-migration: node-parse5 8.0.1+dfsg-3build3 Breaks node-cheerio (<< 1.2~) and node-jsdom (<< 20.0.3+~cs124.18.21-7~). Because node-cheerio is not a candidate, node-parse5 makes jest, ts- jest, node-jest-react, jupyterlab, node-jupyter-widgets-*, node-bqplot, node-ipydatagrid, node-jsdom, node-cheerio, node-http-server, perlnavigator and python-ipywidgets-doc uninstallable, so it stays in proposed. node-jsdom -10build3 is in turn held behind node-parse5. Suggested fix: keep the CommonJS dialect ("dialects": ["esm", "commonjs"]) and the "require" export conditions in debian-build- adjustments.patch, so that dist/commonjs is built and shipped again. This should also be fixed in Debian, where no bug has been reported yet. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2169270 Title: node-cheerio 1.2.0 is ESM-only: require("cheerio") fails with ERR_PACKAGE_PATH_NOT_EXPORTED (eslint autopkgtest regression, blocks node-parse5) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/node-cheerio/+bug/2169270/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
