Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parcel Serve 2.8.0 randomly crashes while rebuilding #8615

Open
roddypratt opened this issue Nov 9, 2022 · 40 comments · May be fixed by #8616
Open

Parcel Serve 2.8.0 randomly crashes while rebuilding #8615

roddypratt opened this issue Nov 9, 2022 · 40 comments · May be fixed by #8616

Comments

@roddypratt
Copy link

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
@mischnic mischnic linked a pull request Nov 9, 2022 that will close this issue
@Elias-Graf
Copy link

Elias-Graf commented Nov 10, 2022

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.

@Ayc0
Copy link

Ayc0 commented Nov 13, 2022

In #8625, I noticed another error related to rebuilding (but I think it's related to ESM and not on windows).

See #8625 (comment)

@Elias-Graf
Copy link

Related #8571

@Elias-Graf
Copy link

Elias-Graf commented Nov 17, 2022

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

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

@mischnic
Copy link
Member

How can I reproduce this on Windows?

@Elias-Graf
Copy link

@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.

@roddypratt
Copy link
Author

roddypratt commented Nov 21, 2022

@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

@scottgarner
Copy link

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

@partyvaper
Copy link

partyvaper commented Dec 9, 2022

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 #8616


After applying changes from #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'

@andrew-rinato
Copy link

Dropbox file sync was the culprit for me.

@IMGROOT2
Copy link

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

@HelloJesus
Copy link

HelloJesus commented Feb 21, 2023

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
Copy link

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

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

@IMGROOT2
Copy link

Same error, same frequency (every other rebuild)

@Cristy94
Copy link

Cristy94 commented Mar 23, 2023

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'
}

@IMGROOT2
Copy link

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?

@tikato
Copy link

tikato commented Apr 12, 2023

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).

@xamasistemas
Copy link

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

@Elpatii
Copy link

Elpatii commented Apr 19, 2023

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

@Cristy94
Copy link

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

image

@DarrenDanielDay
Copy link

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?

@tones31
Copy link

tones31 commented May 27, 2023

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.

@xGeekoo
Copy link

xGeekoo commented Jul 16, 2023

Do we have any fix for that ?

@lexuzieel
Copy link

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

@benyrfg
Copy link

benyrfg commented Sep 5, 2023

I have the same issue.

@Cristy94
Copy link

Cristy94 commented Sep 25, 2023

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.

@kumaramit24apps
Copy link

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\@parcel+fs@2.9.3_@parcel+core@2.9.3\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'
}

@Cristy94
Copy link

@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.

@kumaramit24apps
Copy link

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: [],
}

@HenkVanMaanen
Copy link

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) .

@msimpson
Copy link

msimpson commented Jan 2, 2024

The only workaround I've found to mitigate this issue is to disable HMR (--no-hmr).

Which, of course, is not the greatest DX; but at least I'm not restarting Parcel every other file save.

@Cristy94
Copy link

Cristy94 commented Jan 4, 2024

The only workaround I've found to mitigate this issue is to disable HMR (--no-hmr).

Which, of course, is not the greatest DX; but at least I'm not restarting Parcel every other file save.

I mean, what's the point of 10ms HMR reloads, if we can't use it because it crashes?

Shouldn't this issue be a high priority, as it almost makes Parcel obsolete?

@olliefwilliams
Copy link

Also hitting this issue. Was quite excited to use parcel as it worked really well on MacOS. Sadly the exact same project hits this error on W10.

@LukasBeh
Copy link

LukasBeh commented Feb 9, 2024

I have the same Issue but weirdly, it only crashes when the site is opened in Firefox. In Edge, I don't have this problem. If I open it in Firefox private mode, there is no issue as well. But it's not something that's related to my cache or browser plugins, as I also have this problem when I start Firefox in safe mode.

Edit: Deleting cache, cookies and site-data actually solved this issue for me. After deleting cache, cookies and site-data the issue occurs much less frequently. Didn't know that Cache / Cookies / Site Data is still accessed in safe mode

@ahmadmohammadirad2006
Copy link

Same issue for me , Is there any fix for that?

@netbka
Copy link

netbka commented May 10, 2024

This is still an issue.
Working with parcel and tailwindcss. Tried all the proposed solutions but it keeps crashing

@Ethan-C-Honzik
Copy link

Never had an issue until recently in some projects where I tried using tailwind and later picocss. Seems its likely css related? Could also be a coincidence but odd its never happened until now

@PinkMeNow
Copy link

PinkMeNow commented May 15, 2024

Happens to me all the time, not using tailwind but using Bootstrap + SCSS. Makes parcel barely usable. This should be a highest priority issue.

@runtimerror
Copy link

I'm having this issue on nearly every other save. It's most frequent when I save an html file. I'm using Windows 11, and for the moment my project only consists of one html file, a css file, and a js file. It's all vanilla. I'm about to ditch Parcel and try something else.

@Ethan-C-Honzik
Copy link

I'm having this issue on nearly every other save. It's most frequent when I save an html file. I'm using Windows 11, and for the moment my project only consists of one html file, a css file, and a js file. It's all vanilla. I'm about to ditch Parcel and try something else.

Weird I've never had the crashing with a setup like that. I've been using vite as an alternative for my crashing projects as of late. Bit of a shame as I prefer parcel for no framework ts projects.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.