parcel icon indicating copy to clipboard operation
parcel copied to clipboard

[bug] "@parcel/packager-js: Got unexpected null" -- related to scope-hoisting

Open stargazer33 opened this issue 4 months ago • 0 comments

🐛 bug report

Build failed with @parcel/packager-js: Got unexpected null

🎛 Configuration ( package.json, cli command)

package.json:

{
  "name": "typesense-front-bs",
  "description": "",
  "version": "1.0.0",
  "private": true,
  "targets": {
    "bs": {
      "source": "src/bs-index.html",
      "distDir": "./dist/bs"
    },
    "ex": {
      "source": [
        "src/ex.html",
        "src/help.html"
      ],
      "distDir": "./dist/ex"
    }
  },
  "@parcel/runtime-js": {
    "splitManifestThreshold": 999999
  },
  "scripts": {
    "build-ex-prod":  "NODE_ENV=prod  parcel build --target ex  --no-autoinstall --no-cache ",
  },
  "dependencies": {
    "@babel/runtime": "7.25.0",
    "@popperjs/core": "2.11.8",
    "bootstrap": "5.3.3",
    "bootstrap-icons": "1.11.3",
    "sass": "1.77.6",
    "typesense": "1.8.2"
  },
  "devDependencies": {
    "@babel/core": "7.25.2",
    "@babel/preset-env": "7.25.4",
    "@parcel/config-default": "2.12.0",
    "@parcel/namer-default": "2.12.0",
    "@parcel/optimizer-svgo": "2.12.0",
    "@parcel/packager-html": "2.12.0",
    "@parcel/packager-raw": "2.12.0",
    "@parcel/reporter-bundle-analyzer": "2.12.0",
    "@parcel/reporter-cli": "2.12.0",
    "@parcel/transformer-raw": "2.12.0",
    "@parcel/transformer-sass": "2.12.0",
    "babel-jest": "29.7.0",
    "dotenv": "16.4.5",
    "jest": "29.7.0",
    "parcel": "2.12.0"
  }

Command line (Ubuntu):

> node --version
v20.16.0
> npm --version
10.8.1
> parcel --version
2.12.0
> parcel build --target ex  --no-autoinstall --no-cache
...
You are trying to configure cleanupIDs which is not part of preset-default.
Try to put it before or after, for example

plugins: [
  {
    name: 'preset-default',
  },
  'cleanupIDs'
]

You are trying to configure cleanupIDs which is not part of preset-default.
Try to put it before or after, for example

plugins: [
  {
    name: 'preset-default',
  },
  'cleanupIDs'
]
🚨 Build failed.

@parcel/packager-js: Got unexpected null

  Error: Got unexpected null
      at nullthrows (<mypath>/node_modules/nullthrows/nullthrows.js:7:15)
      at <mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:864:51
      at Array.every (<anonymous>)
      at <mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:863:35
      at Array.filter (<anonymous>)
      at ScopeHoistingPackager.buildAssetPrelude 
  (<mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:853:60)
      at ScopeHoistingPackager.buildAsset (<mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:404:48)
      at ScopeHoistingPackager.visitAsset (<mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:359:17)
      at processAsset (<mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:142:40)
      at ScopeHoistingPackager.package (<mypath>/node_modules/@parcel/packager-js/lib/ScopeHoistingPackager.js:156:9)

🤔 Expected Behavior

Build works

😯 Current Behavior

Build fails, see "Configuration"

💁 Possible Solution

This is a WORKAROUND, not a solution! Just added --no-scope-hoist

>parcel build --target ex  --no-autoinstall --no-cache --no-scope-hoist
...
You are trying to configure cleanupIDs which is not part of preset-default.
Try to put it before or after, for example

plugins: [
  {
    name: 'preset-default',
  },
  'cleanupIDs'
]

You are trying to configure cleanupIDs which is not part of preset-default.
Try to put it before or after, for example

plugins: [
  {
    name: 'preset-default',
  },
  'cleanupIDs'
]
✨ Built in 6.39s

dist/ex/ex.html              23.64 KB    531ms
dist/ex/help.html             6.44 KB    419ms
dist/ex/ex.b99290e1.css      158.8 KB    431ms
dist/ex/help.9c4f8225.js    107.97 KB    613ms
dist/ex/ex.c72246c2.js      199.81 KB    1.19s

🔦 Context

Have to use --no-scope-hoist all the time. Generated .js files are too big because of this.

🌍 Your Environment

Software Version(s)
Parcel 2.12.0
Node v20.16.0
npm/Yarn npm 10.8.1
Operating System Ubuntu 22.04

stargazer33 avatar Sep 30 '24 16:09 stargazer33