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).
fn(...args, function (err, ...re is from @parcel/utils/lib/promisify.js:4:17console.error(new Error("i'm here")) in lib/promisify.js (see below original error)'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)
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
Looks like parcel tried to send function via PostMessage...
it's no matter, parcel fails before it can read any source code
src/test.jsx
export function foo () {}
| 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
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
}
}
Destination name index.jsx extension does not match bundle type "js"
should include full path to file)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.
Should be somewhat fixed by https://github.com/parcel-bundler/parcel/pull/4018
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
MemoryFSorNodePackageManagerregister 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
The worker delegation in
@parcel/corewould then use that list of classes to prepare objects: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