Parcel: Parcel 2.0.0-alpha.3.2: * could not be cloned.

Created on 22 Nov 2019  ยท  18Comments  ยท  Source: parcel-bundler/parcel

๐Ÿ› bug report

I have usual react project with webpack, babel@7, postcss@7 etc. And I tries to use parcel now. Parcel@1 is working good. But parcel@next show misterious error (see below).

  1. I found, that fn(...args, function (err, ...re is from @parcel/utils/lib/promisify.js:4:17
  2. Next I added more useful stacktrace using console.error(new Error("i'm here")) in lib/promisify.js (see below original error)
  3. I had not found any 'could not be cloned' in node_modules, so looks it comes from Node.js. DOMException says about it too.
โฏ parcel build src/index.jsx
DOMException [DataCloneError]: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
    at Worker.postMessage (internal/worker.js:223:23)
    at ThreadsWorker.send (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/threads/ThreadsWorker.js:62:17)
    at Worker.send (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/Worker.js:81:17)
    at Worker.call (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/Worker.js:91:10)
    at WorkerFarm.processQueue (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/WorkerFarm.js:225:16)
    at Worker.<anonymous> (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/WorkerFarm.js:182:35)
    at Worker.emit (events.js:210:5)
    at Worker.fork (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/node_modules/@parcel/workers/lib/Worker.js:77:10)

useful stacktrace:

    at module.exports (/Users/mxtnr/rocket/felix/front/node_modules/parcel/node_modules/@parcel/utils/lib/promisify.js:4:17)
    at new NodeFS (/Users/mxtnr/rocket/felix/front/node_modules/parcel/node_modules/@parcel/fs/lib/NodeFS.js:48:58)
    at Command.run (/Users/mxtnr/rocket/felix/front/node_modules/parcel/lib/cli.js:97:63)
    at Command.listener (/Users/mxtnr/rocket/felix/front/node_modules/commander/index.js:315:8)
    at Command.emit (events.js:210:5)
    at Command.parseArgs (/Users/mxtnr/rocket/felix/front/node_modules/commander/index.js:654:12)
    at Command.parse (/Users/mxtnr/rocket/felix/front/node_modules/commander/index.js:474:21)
    at Object.<anonymous> (/Users/mxtnr/rocket/felix/front/node_modules/parcel/lib/cli.js:85:9)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)

๐ŸŽ› Configuration

Ok, I attached my configs, by parcel fails before it read any of them.
When I install parcel into empty directory all going perfect.

cli command, .babelrc, .postcssrc, package.json,,,

parcel build test.jsx

.babelrc

{
      "plugins": [],
      "presets": [
        ["@babel/env", {
          "targets": {
          },
          "modules":     false,
          "useBuiltIns": false,
          "loose":       true
        }],
      ]
}

package.json (part)

{
  "name": "front",
  "version": "0.0.0",
  "main": "src/index.jsx",
  "dependencies": {
    "react": "^16.11.0",
  },
  "devDependencies": {
    "@babel/cli": "^7.5.5",
    "@babel/core": "^7.5.5",
    "@babel/preset-env": "^7.5.5",
    "parcel": "^2.0.0-alpha.3.2",
    "postcss-modules": "^1.4.1",
  },
  "alias": {
    "src": "./src",
    "utils": "./src/utils",
    "components": "./src/components",
    "public": "./src/public",
    "layouts": "./src/layouts",
    "actions": "./src/actions",
    "containers": "./src/containers",
    "pages": "./src/pages",
    "reducers": "./src/reducers",
    "widgets": "./src/widgets"
  },

.postcssrc

{
  "modules": true,
  "plugins": {
    "postcss-import": {},
    "postcss-preset-env":  {
      "features": {},
      "autoprefixer": {
        "flexbox": false,
      }
    },
    "postcss-nested": {}
  },
  "sourceMap": true,
}

.browserslistrc

last 2 Chrome version
last 1 Safari version

๐Ÿ’ Possible Solution

Looks like parcel tried to send function via PostMessage...

๐Ÿ’ป Code Sample

it's no matter, parcel fails before it can read any source code

src/test.jsx

export function foo () {}

๐ŸŒ Your Environment

| Software | Version(s) |
| ---------------- | ---------- |
| Parcel | 2.0.0-alpha.3.2
| Node | v12.13.0
| npm/Yarn | 6.12.1/1.13.0
| Operating System | macos 10.14.6 mojave

Bug Confirmed Bug โœจ Parcel 2

Most helpful comment

TL;DR: As a workaround, use yarn instead of npm ๐Ÿ˜ฌ

@fregante Great!

I think I've found the problem (it works with Yarn and is broken with npm):
Some Parcel classes like MemoryFS or NodePackageManager register themselves to make sure they are serialized properly (because the structured cloning algorithm between worker threads doesn't support among others functions).
For that, the individual plugins called

import {registerSerializableClass} from '@parcel/utils';

class XYZ {}
registerSerializableClass(version, XYZ);

The worker delegation in @parcel/core would then use that list of classes to prepare objects:

import {
  prepareForSerialization,
  restoreDeserializedObject,
} from '@parcel/utils';

this.worker.postMessage(prepareForSerialization(data));

Yarn hoists the dependencies and so @parcel/utils (and the classes list) exists only once.


With npm however, every package get's its own list, so that objects of these classes aren't replaced and therefore cloning fails

./parcel/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-data-url/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-cli/node_modules/@parcel/utils/src/serializer.js
./@parcel/resolver-default/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-css/node_modules/@parcel/utils/src/serializer.js
./@parcel/core/node_modules/@parcel/utils/src/serializer.js
./@parcel/cache/node_modules/@parcel/utils/src/serializer.js
./@parcel/package-manager/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-html/node_modules/@parcel/utils/src/serializer.js
./@parcel/runtime-browser-hmr/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-html/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-postcss/node_modules/@parcel/utils/src/serializer.js
./@parcel/runtime-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-terser/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-stylus/node_modules/@parcel/utils/src/serializer.js
./@parcel/bundler-default/node_modules/@parcel/utils/src/serializer.js
./@parcel/source-map/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-babel/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-hmr-server/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-coffeescript/node_modules/@parcel/utils/src/serializer.js
./@parcel/scope-hoisting/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-sass/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-dev-server/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-htmlnano/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-react-refresh-wrap/node_modules/@parcel/utils/src/serializer.js

All 18 comments

Looks like parcel tried to send function via PostMessage...

Indeed

I tried to reproduce this with your config files, but no error is thrown?

Next, I added console log at
node_modules/@parcel/core/node_modules/@parcel/workers/lib/threads/ThreadsWorker.js:62:17

  send(data) {
    console.log('>>', _utils.prepareForSerialization(data))
    this.worker.postMessage((0, _utils.prepareForSerialization)(data));
  }

and what I get:

{
  type: 'request',
  idx: 1,
  child: 2,
  handle: undefined,
  method: 'runTransform',
  args: [ { request: [Object], options: [Object] }, false ]
}

hm, look into args[0] more detailed:

{
  request: {
    filePath: '/Users/mxtnr/rocket/felix/front/src/test.jsx',
    sideEffects: undefined,
    code: undefined,
    env: {
      context: 'node',
      engines: [Object],
      includeNodeModules: false,
      outputFormat: 'commonjs',
      isLibrary: true
    },
    pipeline: 'main'
  },
  options: {
    config: undefined,
    defaultConfig: {
      bundler: '@parcel/bundler-default',
      // ... I hide more not interected lines
      filePath: '/Users/mxtnr/rocket/felix/front/node_modules/@parcel/config-default/index.json'
    },
    // ... I hide more not interected lines
    cacheDir: '/Users/mxtnr/rocket/felix/front/.parcel-cache',
    entries: [ '/Users/mxtnr/rocket/felix/front/src/test.jsx' ],
    rootDir: '/Users/mxtnr/rocket/felix/front/src',
    projectRoot: '/Users/mxtnr/rocket/felix/front',
    lockFile: '/Users/mxtnr/rocket/felix/front/package-lock.json',
    inputFS: { '$$type': '2.0.0-alpha.3.1:NodeFS', '$$raw': true, value: {} },
    outputFS: { '$$type': '2.0.0-alpha.3.1:NodeFS', '$$raw': true, value: {} },
    cache: Cache {
      fs: [Object],
      dir: '/Users/mxtnr/rocket/felix/front/.parcel-cache'
    },
    packageManager: NodePackageManager {
      fs: [NodeFS], // <<<
      installer: undefined,
      cache: [Map]
    }
  }
}

LOOOOK: [NodeFS]. So NodeFS is related with @parcel/fs/lib/NodeFS.js and so @parcel/utils/lib/promisify.js

Next I removed packageManager for request with method === runTransform from args[0].options

And replaced options.packageManager and options.cache in all the use-places by:

var NodePackageManager = require('@parcel/package-manager').NodePackageManager;
var NodeFS = require('@parcel/fs').NodeFS;
var packageManager = new NodePackageManager(new NodeFS());

and

var NodeFS = require('@parcel/fs').NodeFS;
this.options.cache = new (require('@parcel/cache').default)(new NodeFS(), '/Users/mxtnr/rocket/felix/front/.parcel-cache');

UPD And Now I had runned parcel build test.jsx again and I have new mysterious error:

Error: Destination name index.jsx extension does not match bundle type "js"
    at BundlerRunner.nameBundle (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/lib/BundlerRunner.js:192:19)

It's not obvious, what's wrong, but looks like it's related with package.json#main,

ok I ran parcel build src/index.jsx (I took usual src/index.jsx instead of almost empty test.jsx)

And I have new 3th error:

๐Ÿšจ Error: Cannot find module '~public/logo3.png' from '/Users/mxtnr/rocket/felix/front/src'
Error: Cannot find module '~public/logo3.png' from '/Users/mxtnr/rocket/felix/front/src'
    at ResolverRunner.resolve (/Users/mxtnr/rocket/felix/front/node_modules/@parcel/core/lib/ResolverRunner.js:124:15)

This error is not pointing any my source file (make error like this more informative please, too :-), but I found '~public/logo3.png' at my src/felix1.5-theme.css file:

.felix-1-5 h1#site_title {
  background: url(~public/logo3.png) center center no-repeat / 30px;
}

Ok, I fixed it by removing ~ sign

Now parcel bundles almost whole my big project!

... but fails on 'runPackage' method now, in a addition to 'runTransform', I mentioned above

_utils.prepareForSerialization(data).args[0].config.value.packageManager

It fails on woff2 file; _utils.prepareForSerialization(data).args[0]:

{
  bundle: {
    id: 'bundle:46702a92e44969a74fde1c382422d953',
    type: 'woff2',
    env: {
      context: 'browser',
      engines: [Object],
      includeNodeModules: false,
      outputFormat: 'commonjs',
      isLibrary: true
    },
    entryAssetIds: [ '46702a92e44969a74fde1c382422d953' ],
    pipeline: undefined,
    filePath: '/Users/mxtnr/rocket/felix/front/dist/caard.f3f4ed38.woff2', // <<<<<<
    isEntry: false,
    isInline: false,
    target: {
      name: 'main',
      distDir: '/Users/mxtnr/rocket/felix/front/dist',
      distEntry: 'index.js',
      publicUrl: '/',
      env: [Object],
      sourceMap: undefined
    },
    name: 'caard.f3f4ed38.woff2',
    stats: { size: 9924, time: 0 }
  },
    // ... I hides some not interected lines
    packageManager: NodePackageManager {
      fs: [NodeFS],
      installer: undefined,
      cache: [Map]
    }
  },
  config: {
      // ... I hides some not interected lines
  }
}

Summary

What nice to fix

  1. don't pass options.cache and options.packageManager through workers. Import them directly instead
  2. improve some error informativity (e.g. Destination name index.jsx extension does not match bundle type "js" should include full path to file)

Some questions

  1. why ~ was not work for me here?

don't pass options.cache and options.packageManager through workers. Import them directly instead

No, there is a reason it's done this way. And I still can't reproduce this issue locally!

I'm getting the same error. Doesn't happen on a new project, just my existing ones. I'll see if I can find a subset of the code that causes this.

I also run into this error. [email protected] worked fine. I deleted the cache folder but the error keeps coming up:

 Error: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
DataCloneError: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
    at Worker.postMessage (internal/worker.js:223:23)

@pke Can you provide a reproduction?

@mischnic I tried to reproduce, but couldn't. It now gives me:

๐Ÿšจ Error: Received URL without a pathname.
Error: Received URL without a pathname.
    at ResolverRunner.resolve (/var/node_modules/@parcel/core/lib/ResolverRunner.js:80:15)
    at async DepPathRequestRunner.runRequest (/var/node_modules/@parcel/core/lib/RequestTracker.js:356:43)
    at async Promise.all (index 19)

Which was not very helpful, cause it omitted the URL. I've created a PR #3968 to find out whats going on.

I think the original error originated maybe from a insufficient number of avail inotify handles on the system, cause parcel@1 watcher reported an error with inotify handles. Once I solved them parcel@1 ran ok but parcel@2 prints out this new error message.

edit: Running a local modified version it prints:
Error: Received URL without a pathname. #default#VML

No idea where this asset is coming from.

I'm having that issue here https://github.com/sindresorhus/refined-github/tree/WIP-parcel

Run npm run build

It's not a _minimal_ example but perhaps it can be useful.

I'm just running parcel build source/content.ts and the error appears even if content.ts is empty. It must be some configuration or dependency conflict.

Node v10.18.1 (or v12.14.1)
Parcel 2.0.0-alpha.3.2
macOS 10.15.2


Also seen on GitHub Actions (Node 10) https://github.com/sindresorhus/refined-github/runs/387639076

TL;DR: As a workaround, use yarn instead of npm ๐Ÿ˜ฌ

@fregante Great!

I think I've found the problem (it works with Yarn and is broken with npm):
Some Parcel classes like MemoryFS or NodePackageManager register themselves to make sure they are serialized properly (because the structured cloning algorithm between worker threads doesn't support among others functions).
For that, the individual plugins called

import {registerSerializableClass} from '@parcel/utils';

class XYZ {}
registerSerializableClass(version, XYZ);

The worker delegation in @parcel/core would then use that list of classes to prepare objects:

import {
  prepareForSerialization,
  restoreDeserializedObject,
} from '@parcel/utils';

this.worker.postMessage(prepareForSerialization(data));

Yarn hoists the dependencies and so @parcel/utils (and the classes list) exists only once.


With npm however, every package get's its own list, so that objects of these classes aren't replaced and therefore cloning fails

./parcel/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-data-url/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-cli/node_modules/@parcel/utils/src/serializer.js
./@parcel/resolver-default/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-css/node_modules/@parcel/utils/src/serializer.js
./@parcel/core/node_modules/@parcel/utils/src/serializer.js
./@parcel/cache/node_modules/@parcel/utils/src/serializer.js
./@parcel/package-manager/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-html/node_modules/@parcel/utils/src/serializer.js
./@parcel/runtime-browser-hmr/node_modules/@parcel/utils/src/serializer.js
./@parcel/packager-html/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-postcss/node_modules/@parcel/utils/src/serializer.js
./@parcel/runtime-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-terser/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-js/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-stylus/node_modules/@parcel/utils/src/serializer.js
./@parcel/bundler-default/node_modules/@parcel/utils/src/serializer.js
./@parcel/source-map/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-babel/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-hmr-server/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-coffeescript/node_modules/@parcel/utils/src/serializer.js
./@parcel/scope-hoisting/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-sass/node_modules/@parcel/utils/src/serializer.js
./@parcel/reporter-dev-server/node_modules/@parcel/utils/src/serializer.js
./@parcel/optimizer-htmlnano/node_modules/@parcel/utils/src/serializer.js
./@parcel/transformer-react-refresh-wrap/node_modules/@parcel/utils/src/serializer.js

With npm however, every package get's its own list, so that objects of these classes aren't replaced and therefore cloning fails

What?! Why aren't they getting deduplicated? ๐Ÿ˜…

Mh, which npm version are you using?
I just tried it again and:

node_modules $ find . -name "serializer.js"
./whatwg-mimetype/lib/serializer.js
./@parcel/utils/lib/serializer.js
./@parcel/utils/src/serializer.js
node_modules $ npm -v
6.13.4
โฏ npm --version
6.13.4

Here's the full log after deleting node_modules (but same package-log.json)


npm i

> [email protected] install ./node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

  ACTION binding_gyp_ndtp_target_build_ndtp .
  TOUCH Release/obj.target/ndtp.stamp

> [email protected] install ./node_modules/deasync
> node ./build.js

`darwin-x64-node-12` exists; testing
Binary is fine; exiting

> [email protected] install ./node_modules/watchpack/node_modules/fsevents
> node-gyp rebuild

  SOLINK_MODULE(target) Release/.node
  CXX(target) Release/obj.target/fse/fsevents.o
  SOLINK_MODULE(target) Release/fse.node

> @parcel/[email protected] install ./node_modules/@parcel/core/node_modules/@parcel/watcher
> prebuild-install -r napi || node-gyp rebuild


> @parcel/[email protected] install ./node_modules/@parcel/package-manager/node_modules/@parcel/watcher
> prebuild-install -r napi || node-gyp rebuild


> @parcel/[email protected] install ./node_modules/@parcel/transformer-sass/node_modules/@parcel/watcher
> prebuild-install -r napi || node-gyp rebuild


> @parcel/[email protected] install ./node_modules/parcel/node_modules/@parcel/watcher
> prebuild-install -r napi || node-gyp rebuild


> [email protected] postinstall ./node_modules/@parcel/transformer-babel/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> [email protected] postinstall ./node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> [email protected] postinstall ./node_modules/ejs
> node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)


> [email protected] postinstall ./node_modules/spawn-sync
> node postinstall

added 2770 packages from 1368 contributors and audited 38857 packages in 48.693s

54 packages are looking for funding
  run `npm fund` for details

found 196 vulnerabilities (49 moderate, 49 high, 98 critical)
  run `npm audit fix` to fix them, or `npm audit` for details



npm run build

> @ build .
> parcel build source/content.ts

๐Ÿšจ Error: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
DataCloneError: function (...args) {
๐Ÿšจ Error: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
DataCloneError: function (...args) {
    return new Promise(function (resolve, reject) {
      fn(...args, function (err, ...re...<omitted>... } could not be cloned.
    at Worker.postMessage (internal/worker.js:223:23)
    at ThreadsWorker.send 
(./node_modules/@parcel/core/no
de_modules/@parcel/workers/lib/threads/ThreadsWorker.js:62:17)
    at Worker.send (./node_modu
les/@parcel/core/node_modules/@parcel/workers/lib/Worker.js:81:17)
    at Worker.call (./node_modu
les/@parcel/core/node_modules/@parcel/workers/lib/Worker.js:91:10)
    at WorkerFarm.processQueue 
(./node_modules/@parcel/core/no
de_modules/@parcel/workers/lib/WorkerFarm.js:225:16)
    at ./node_modules/@parcel/c
ore/node_modules/@parcel/workers/lib/WorkerFarm.js:315:12
    at new Promise (<anonymous>)
    at WorkerFarm.addCall (./no
de_modules/@parcel/core/node_modules/@parcel/workers/lib/WorkerFarm.js:307:12)
    at AssetRequestRunner.runTransform 
(./node_modules/@parcel/core/no
de_modules/@parcel/workers/lib/WorkerFarm.js:155:21)
    at AssetRequestRunner.run (./node_modules/@parcel/core/lib/requests.js:118:20)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ build: `parcel build source/content.ts`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     ~/.npm/_logs/2020-01-20T16_13_53_218Z-debug.log


find . -name "serializer.js"

./node_modules/parcel/node_modules/@parcel/utils/lib/serializer.js
./node_modules/parcel/node_modules/@parcel/utils/src/serializer.js
./node_modules/fluent-syntax/src/serializer.js
./node_modules/whatwg-mimetype/lib/serializer.js
./node_modules/@parcel/optimizer-data-url/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/optimizer-data-url/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/reporter-cli/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/reporter-cli/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/resolver-default/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/resolver-default/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/packager-css/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/packager-css/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/core/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/core/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/cache/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/cache/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/package-manager/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/package-manager/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/packager-js/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/packager-js/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-html/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-html/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/runtime-browser-hmr/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/runtime-browser-hmr/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/packager-html/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/packager-html/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-postcss/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-postcss/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/runtime-js/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/runtime-js/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/optimizer-terser/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/optimizer-terser/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-js/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-js/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-stylus/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-stylus/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/bundler-default/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/bundler-default/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/source-map/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/source-map/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-babel/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-babel/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/reporter-hmr-server/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/reporter-hmr-server/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-coffeescript/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-coffeescript/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/scope-hoisting/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/scope-hoisting/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-sass/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-sass/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/reporter-dev-server/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/reporter-dev-server/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/optimizer-htmlnano/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/optimizer-htmlnano/node_modules/@parcel/utils/src/serializer.js
./node_modules/@parcel/transformer-react-refresh-wrap/node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/transformer-react-refresh-wrap/node_modules/@parcel/utils/src/serializer.js

Classic. I had to delete node_modules _and_ package-lock.json to have this result after npm install:

โฏ find . -name "serializer.js"
./node_modules/fluent-syntax/src/serializer.js
./node_modules/whatwg-mimetype/lib/serializer.js
./node_modules/@parcel/utils/lib/serializer.js
./node_modules/@parcel/utils/src/serializer.js

Now the build seems to work ๐Ÿ‘

I wonder if Parcel should detect this and suggest a solution. This is one of those "it's not Parcel's fault" bugs but they still affect you.

Was this page helpful?
0 / 5 - 0 ratings