parcel icon indicating copy to clipboard operation
parcel copied to clipboard

Parcel Serve 2.8.0 randomly crashes while rebuilding

Open roddypratt opened this issue 1 year ago ā€¢ 34 comments

After editing an HTML file and resaving, parcel will occasionally bomb out with the following trace.

Not repeatable, but this never happened with the previous 2.7.0 build.

Server running at http://localhost:1234
\ Building index.html...
node:internal/fs/utils:347
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink 'C:\Rascular\ViewMaster\dist\index.html.2508.m'
    at Object.unlinkSync (node:fs:1767:3)
    at NodeFS.unlinkSync (C:\Rascular\ViewMaster\.pnp.cjs:5919:24)
    at makeCallSync.subPath.subPath (C:\Rascular\ViewMaster\.pnp.cjs:8166:26)
    at ZipOpenFS.makeCallSync (C:\Rascular\ViewMaster\.pnp.cjs:8379:14)
    at ZipOpenFS.unlinkSync (C:\Rascular\ViewMaster\.pnp.cjs:8165:17)
    at VirtualFS.unlinkSync (C:\Rascular\ViewMaster\.pnp.cjs:7463:24)
    at PosixFS.unlinkSync (C:\Rascular\ViewMaster\.pnp.cjs:7463:24)
    at URLFS.unlinkSync (C:\Rascular\ViewMaster\.pnp.cjs:7463:24)
    at WriteStream.<anonymous> (C:\Rascular\ViewMaster\.yarn\__virtual__\@parcel-fs-virtual-99d78ac16b\0\cache\@parcel-fs-npm-2.8.0-30a533924e-75d79963a1.zip\node_modules\@parcel\fs\lib\index.js:1019:83)
    at Object.onceWrapper (node:events:628:26) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\Rascular\\ViewMaster\\dist\\index.html.2508.m'

šŸŒ Your Environment

Software Version(s)
Parcel 2.8.0
Node 16.18.0
npm/Yarn Yarn 3.2.4
Operating System Windows 11

roddypratt avatar Nov 09 '22 15:11 roddypratt

Slightly different error trace here:

- Building cv.html...
node:internal/fs/utils:345
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink 'C:\Users\Elias\Desktop\cv\dist\cv.html.17068.k'
    at Object.unlinkSync (node:fs:1735:3)
    at WriteStream.<anonymous> (C:\Users\Elias\AppData\Roaming\npm\node_modules\parcel\node_modules\@parcel\fs\lib\index.js:1019:83)
    at Object.onceWrapper (node:events:642:26)
    at WriteStream.emit (node:events:539:35)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\Users\\Elias\\Desktop\\cv\\dist\\cv.html.17068.k'
}
Software Version
Parcel 2.8.0
Node v16.16.0
npm 8.13.2
Operating System Windows 11

Maybe related to different versions of Node? šŸ¤·

For me, this is sadly happening quite frequently.

Elias-Graf avatar Nov 10 '22 21:11 Elias-Graf

In https://github.com/parcel-bundler/parcel/pull/8625, I noticed another error related to rebuilding (but I think it's related to ESM and not on windows).

See https://github.com/parcel-bundler/parcel/pull/8625#issuecomment-1312589932

Ayc0 avatar Nov 13 '22 01:11 Ayc0

Related https://github.com/parcel-bundler/parcel/issues/8571

Elias-Graf avatar Nov 17 '22 15:11 Elias-Graf

Not repeatable, but this never happened with the previous 2.7.0 build.

For me, it does very much happen also with older builds.

Elias-Graf avatar Nov 17 '22 15:11 Elias-Graf

How can I reproduce this on Windows?

mischnic avatar Nov 20 '22 21:11 mischnic

@mischnic I'm honestly not sure, it's really inconsistent. I can tell you exactly what I'm doing, though:

  1. Open Windows terminal
  2. parcel serve <path to html>
  3. Open a new tab in Windows terminal
  4. Edit the file using the helix-editor

I've just tested and the same thing does seem to happen when using VS Code instead of the helix-editor.

Elias-Graf avatar Nov 20 '22 21:11 Elias-Graf

@mischnic I'm honestly not sure, it's really inconsistent.

This. It's not always repeatable but I get it once or twice a day. Steps are as above. AFAICT editing any file that causes parcel to do rebuild/HMR may cause the issue.

You could try making a script that repeatedly modifies one of the HTML/JS assets and see if that triggers it?

I'm using Windows 11, VSCode 1.73.1

roddypratt avatar Nov 21 '22 08:11 roddypratt

I can reproduce this consistently by rapidly hitting ctrl-S twice to save in VSCode after making a change that would trigger a rebuild.

scottgarner avatar Dec 04 '22 17:12 scottgarner

Can consistently repeat this issue in Win 11, with latest Parcel version (2.8.1) and Node 16, Node 19, quite annyoing, quickly writing, saving, deleting few chars, saving again in html file, instantly introduces this issue

Never experienced this on macOS with same project.

image

I have tried removing, enabling HMR, changing config, passing various flags, basically no success. Maybe there is some flag to bypass all cache and random file names, as a quick workaround?

Might be solved with https://github.com/parcel-bundler/parcel/pull/8616/


After applying changes from https://github.com/parcel-bundler/parcel/pull/8616/ as yarn patch, it seemed to improve, but now I got another error:

Ɨ Build failed.

@parcel/compressor-raw: EPERM: operation not permitted, rename D:\test\dist\index.html.12768.5c' -> 'D:\test\dist\index.html'

  Error: EPERM: operation not permitted, rename 'D:\test\dist\index.html.12768.5c' -> 'D:\test\dist\index.html'

partyvaper avatar Dec 09 '22 18:12 partyvaper

Dropbox file sync was the culprit for me.

andrew-rinato avatar Feb 06 '23 11:02 andrew-rinato

Disabled OneDrive sync but to no avail. Still the same issue.

IMGROOT2 avatar Feb 21 '23 05:02 IMGROOT2

i tried this writeStream.once("error", () => { failed = true; fs.unlinkSync(tmpFilePath); try { fs.unlinkSync(tmpFilePath); } catch (e) { // ignore error } }); in file @parcel\fs\lib\index.js:1020 but i got:

    fs.unlinkSync(tmpFilePath);
            ^
ReferenceError: fs is not defined

Or what is the right way to make changes from github?

i wrote this: "start": "parcel ./src/index.html --no-cache", and maybe it's work

HelloJesus avatar Feb 21 '23 13:02 HelloJesus

Disabled OneDrive sync but to no avail. Still the same issue.

check this => "start": "parcel ./src/index.html --no-cache"

HelloJesus avatar Feb 21 '23 15:02 HelloJesus

Same error, same frequency (every other rebuild)

IMGROOT2 avatar Mar 23 '23 06:03 IMGROOT2

Save error, parcel keeps on crashing on rebuilding (maybe when I save twice?):

Parcel: 2.8.3 on Windows 11.

Server running at http://localhost:1234
šŸšØ Build failed.
Server running at http://localhost:1234
- Optimizing index.[hash].js...
internal/fs/utils.js:308
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink '...\dist\index.2d3ace14.js.484.1w'
    at Object.unlinkSync (fs.js:1210:3)
    at WriteStream.<anonymous> (...\node_modules\@parcel\core\node_modules\@parcel\fs\lib\index.js:1019:83)
    at Object.onceWrapper (events.js:422:26)
    at WriteStream.emit (events.js:327:22)
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: '...\dist\\index.2d3ace14.js.484.1w'
}

Cristy94 avatar Mar 23 '23 13:03 Cristy94

This is the exact error I get, as well. Iā€™m also on Windows 11. I did some testing and found out this never happens when Parcel is run on a cloud server (GitHub Codespaces, Gitpod). Does that help?

IMGROOT2 avatar Mar 24 '23 00:03 IMGROOT2

Happening for me as well (VSC 1.77.0). Running Node v18.12.0 and it crashes randomly when I update a file (html, js, scss).

tikato avatar Apr 12 '23 07:04 tikato

We made a workaround. We created a 'cleanup' script who celan the .parcel-cache and dist folder.

"scripts": {
    "cleanup": "rimraf .parcel-cache dist",
    "dev": "npm run cleanup && parcel ./src/index.html --no-cache",
    "prebuild": "npx rimraf build",
    "build": "parcel build --public-url ./ ./src/index.html --no-cache"
  },

maybe the problema is concurrency and file lock in the .parcel-cache folder

xamasistemas avatar Apr 17 '23 14:04 xamasistemas

Same for me.

Occurs every time after 3 saves of my index.html.

Server running at http://localhost:1234
- Building index.html...
node:internal/fs/utils:348
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink 'C:\Users\Elpatii\npm\test\dist\index.html.2548.v'
    at Object.unlinkSync (node:fs:1813:3)
    at WriteStream.<anonymous> (C:\Users\Elpatii\npm\test\node_modules\@parcel\fs\lib\index.js:1019:83)
    at Object.onceWrapper (node:events:626:26)
    at WriteStream.emit (node:events:523:35)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\Users\\Elpatii\\npm\\test\\dist\\index.html.2548.v'
}

Run with --no-cache doesn't help, nor cleaning up .parcel-cache and dist folder. No problem with Parcel 2.7.0.

Software Version
Parcel 2.8.3
Node.js 20.0.0
npm 9.6.4
Operating System Windows 11 Pro 22H2

Elpatii avatar Apr 19 '23 11:04 Elpatii

Still happens for me in the latest nightly version (2.0.0-nightly.1293).

image

Cristy94 avatar May 11 '23 12:05 Cristy94

Same problem on Windows 10, really annoying.

But it seems parcel won't crash if I only edit & save HTML files that are not page entries. Currently I try to avoid this problem by changing the HTML files I edit from page entry files to files imported as text bundle.

<!-- the entry HTML file, like `index.html`, that I would never edit after parcel started -->
<script type="module" src="./proxy.js"></script>
// proxy.js
import html from "bundle-text:./the-page-content.html";

document.open();
document.write(html);
document.close();

./the-page-content.html is the real HTML content file that I would edit frequently, and parcel would not crash when I save the-page-content.html.

Is this behavior useful to help find out the bug?

DarrenDanielDay avatar May 26 '23 18:05 DarrenDanielDay

I have the same problem. All I did was start up a brand new parcel project and install tailwindcss following their guide on using it with parcel. It ran fine. Then I deleted "hello world" from the HTML file and it crashed

Error: ENOENT: no such file or directory, unlink 'C:\Test\website\dist\index.html.19376.8'
    at Object.unlinkSync (node:fs:1767:3)
    at WriteStream.<anonymous> (C:\Test\website\node_modules\@parcel\fs\lib\index.js:1028:83)
    at Object.onceWrapper (node:events:628:26)
    at WriteStream.emit (node:events:525:35)
    at emitErrorNT (node:internal/streams/destroy:157:8)
    at emitErrorCloseNT (node:internal/streams/destroy:122:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {      
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\Test\\website\\dist\\index.html.19376.8'

I can reproduce it every time. Just run npx parcel src/index.html and modify the HTML file two times. I also have auto save on VS code.

tones31 avatar May 27 '23 20:05 tones31

Do we have any fix for that ?

xGeekoo avatar Jul 16 '23 02:07 xGeekoo

This issue still happens for me as well. Any ETA for a fix?

lexuzieel avatar Aug 13 '23 13:08 lexuzieel

I have the same issue.

benyrfg avatar Sep 05 '23 19:09 benyrfg

Ok, found a way to reproduce the crash with Error: ENOENT: no such file or directory, unlink:

  • Have parcel running
  • Have the website open in your browser
  • Have DevTools open with "Pause on uncaught exceptions"
  • Introduce an exception error in your code (e.g. console.log(undefined_variable))
  • Save the file (so the app is reloaded and the browser pauses)
  • Fix the error (remove the exception) and save the file again
  • Because the app compiles BUT the browser JS execution is still paused (on debugger), Parcel crashes for some reason:
Error: ENOENT: no such file or directory, unlink 'C:\wamp64\www\userTrack\dist\index.2d3ace14.js.20660.3q'
    at Object.unlinkSync (node:fs:1883:3)
    at WriteStream.<anonymous> (C:\wamp64\www\userTrack\node_modules\@parcel\fs\lib\index.js:1028:83)
    at Object.onceWrapper (node:events:629:26)
    at WriteStream.emit (node:events:526:35)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\wamp64\\www\\userTrack\\dist\\index.2d3ace14.js.20660.3q'
}

So, to trigger the crash in 2 seconds, with dev tools open and "Pause on exceptions on", add this line console.log(undefined_variable), save the file, comment the line, save the file again.

Cristy94 avatar Sep 25 '23 13:09 Cristy94

Same issue with me also. Whenever I try to change something in the html file it simply crashes every time. I tried everything but couldn't fix. What could be the possible reason? I tried using pnpm instead of npm, still stuck in that loophole.

Server running at http://localhost:1234
/ Bundling...
node:internal/fs/utils:350
    throw err;
    ^

Error: ENOENT: no such file or directory, unlink 'C:\GitHub\PNPM-Projects\HelloPNPM\dist\index.html.23708.j'  
    at Object.unlinkSync (node:fs:1883:3)
    at WriteStream.<anonymous> (C:\Users\ikuma\AppData\Local\pnpm\store\v3\tmp\dlx-26124\node_modules\.pnpm\@[email protected]_@[email protected]\node_modules\@parcel\fs\lib\index.js:1028:83)
    at Object.onceWrapper (node:events:629:26)
    at WriteStream.emit (node:events:526:35)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\GitHub\\PNPM-Projects\\HelloPNPM\\dist\\index.html.23708.j'
}

kumaramit24apps avatar Oct 09 '23 21:10 kumaramit24apps

@mischnic

Ok, found a way to reproduce the crash with Error: ENOENT: no such file or directory, unlink:

  • Have parcel running
  • Have the website open in your browser
  • Have DevTools open with "Pause on uncaught exceptions"
  • Introduce an exception error in your code (e.g. console.log(undefined_variable))
  • Save the file (so the app is reloaded and the browser pauses)
  • Fix the error (remove the exception) and save the file again
  • Because the app compiles BUT the browser JS execution is still paused (on debugger), Parcel crashes for some reason:
Error: ENOENT: no such file or directory, unlink 'C:\wamp64\www\userTrack\dist\index.2d3ace14.js.20660.3q'
    at Object.unlinkSync (node:fs:1883:3)
    at WriteStream.<anonymous> (C:\wamp64\www\userTrack\node_modules\@parcel\fs\lib\index.js:1028:83)
    at Object.onceWrapper (node:events:629:26)
    at WriteStream.emit (node:events:526:35)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -4058,
  syscall: 'unlink',
  code: 'ENOENT',
  path: 'C:\\wamp64\\www\\userTrack\\dist\\index.2d3ace14.js.20660.3q'
}

So, to trigger the crash in 2 seconds, with dev tools open and "Pause on exceptions on", add this line console.log(undefined_variable), save the file, comment the line, save the file again.

Cristy94 avatar Oct 10 '23 08:10 Cristy94

I was able to fix this crashing problem by merely fixing my content configuration inside tailwindcss.config.js file. It seemed to crash when it was unable to find the specific path I wrote inside the content property. So, I did the following to fix the issue:

/** @type {import('tailwindcss').Config} */
module.exports = {
-     content: ["./*.html"],
+    content: ["./src/**/*.{html, js, tsx, jsx, ts}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

kumaramit24apps avatar Oct 10 '23 12:10 kumaramit24apps

We had the same problem. The solution was to recursive chown the src directory to the current user so that the permissions of all files are fixed.

chown -R $(id -u):$(id -g) .

HenkVanMaanen avatar Nov 30 '23 16:11 HenkVanMaanen