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 · 56 comments · May be fixed by #8616
Open

Parcel Serve 2.8.0 randomly crashes while rebuilding #8615

roddypratt opened this issue Nov 9, 2022 · 56 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 ?

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

@Ethan-C-Honzik
Copy link

After some more testing I've determined that this crash only happens when a tab is open to the hosted page. Some of my projects have never had a crash before but others are unusable. On the projects that are crashing, its roughly every 3 saves or so. I know some people mentioned only having the issue in firefox but I've seen the crash occur on both edge, firefox, and firefox private tabs.

@devongovett
Copy link
Member

devongovett commented May 17, 2024

If you're having an issue could you please post the exact error message you get or steps leading up to the problem? Also your operating system, parcel version, and any other relevant info. I'm unclear if these are the same issue as the OP or many different things.

@lucio-lima
Copy link

lucio-lima commented May 19, 2024

A simple project and I'm also having the same error. After saving 3 or 4 times the error occurs.

If the browser is closed, the error does not occur, only when it is open.

npm: 10.5.2
node: 20.12.2
parcel: 2.12.0
Chrome: 124.0.6367
OS: Windows 11

HTML

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web Project</title>
    <link rel="stylesheet" href="assets/css/styles.css">
</head>

<body>
    Hello Web
</body>

</html>

CSS

~ empty

CONSOLE ERROR

node:fs:1874
  binding.unlink(path);
          ^

Error: ENOENT: no such file or directory, unlink 'E:\projects\web\dist\index.html.4576.g'
    at Object.unlinkSync (node:fs:1874:11)
    at WriteStream.<anonymous> (E:\projects\web\node_modules\@parcel\fs\lib\index.js:1024:83)
    at Object.onceWrapper (node:events:633:26)
    at WriteStream.emit (node:events:530:35)
    at emitErrorNT (node:internal/streams/destroy:169:8)
    at emitErrorCloseNT (node:internal/streams/destroy:128:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'unlink',
  path: 'E:\\projects\\web\\dist\\index.html.4576.g'
}

@chwilliamson-clgx
Copy link

Same issue here. It's really frustrating. If no fix soon, will have to ditch Parcel.

Server running at http://localhost:1234
⠇ Optimizing index.[hash].css...
node:fs:1877
binding.unlink(path);
^

Error: ENOENT: no such file or directory, unlink 'C:*\src\dist\index.html.251360.bx'
at Object.unlinkSync (node:fs:1877:11)
at WriteStream. (C:\Users*\AppData\Roaming\npm\node_modules\parcel\node_modules@parcel\fs\lib\index.js:1024:83)
at Object.onceWrapper (node:events:634:26)
at WriteStream.emit (node:events:531:35)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
errno: -4058,
code: 'ENOENT',
syscall: 'unlink',
path: '
**********\index.html.251360.bx'
}

Node.js v20.13.1

@chwilliamson-clgx
Copy link

chwilliamson-clgx commented Jun 7, 2024

Adding this existsSync() check before the unlinkSync worked for me. I modified the following file:
C:\Users\redacted\AppData\Roaming\npm\node_modules\parcel\node_modules@parcel\fs\lib\index.js

It fixed my coworker as well, maybe others can verify and then someone can make a PR (or maybe fix it in a better way)

writeStream.once("error", () => {
            failed = true;
            if ((0, (/*@__PURE__*/$parcel$interopDefault($0aeff293b9dd16bd$exports))).existsSync(tmpFilePath)) {
                (0, (/*@__PURE__*/$parcel$interopDefault($0aeff293b9dd16bd$exports))).unlinkSync(tmpFilePath);
            }
        });
        return writeStream;

@PinkMeNow
Copy link

PinkMeNow commented Jun 10, 2024

@chwilliamson-clgx

Adding this existsSync() check before the unlinkSync worked for me. I modified the following file:
C:\Users\redacted\AppData\Roaming\npm\node_modules\parcel\node_modules@parcel\fs\lib\index.js

Can you tell me what was the original code before you replaced it?

@chwilliamson-clgx
Copy link

@chwilliamson-clgx

Adding this existsSync() check before the unlinkSync worked for me. I modified the following file:
C:\Users\redacted\AppData\Roaming\npm\node_modules\parcel\node_modules@parcel\fs\lib\index.js

Can you tell me what was the original code before you replaced it?

Just the same exact code without the if condition. However, the change worked perfectly for many days, it's suddenly just today back to crashing every few saves. I have no explanation for this. Windows 10 here.

@abbasrizvi2
Copy link

@chwilliamson-clgx

Adding this existsSync() check before the unlinkSync worked for me. I modified the following file:
C:\Users\redacted\AppData\Roaming\npm\node_modules\parcel\node_modules@parcel\fs\lib\index.js

Can you tell me what was the original code before you replaced it?

Just the same exact code without the if condition. However, the change worked perfectly for many days, it's suddenly just today back to crashing every few saves. I have no explanation for this. Windows 10 here.

I am also fed up with this error, wasted almost 3 days solving it and still can't find a solution

@abbasrizvi2
Copy link

abbasrizvi2 commented Jun 14, 2024

If you're having an issue could you please post the exact error message you get or steps leading up to the problem? Also your operating system, parcel version, and any other relevant info. I'm unclear if these are the same issue as the OP or many different things.

after running npx parcel it work fine but when I make some changes in my html file it throws this error

`Server running at http://localhost:1234
⠋ Building index.html...
node:fs:1877
binding.unlink(path);
^

Error: ENOENT: no such file or directory, unlink 'C:\Users\abbas\OneDrive\Desktop\Namaste React\dist\index.html.16372.a'
at Object.unlinkSync (node:fs:1877:11)
at WriteStream. (C:\Users\abbas\OneDrive\Desktop\Namaste React\node_modules@parcel\fs\lib\index.js:1024:83)
at Object.onceWrapper (node:events:634:26)
at WriteStream.emit (node:events:531:35)
at emitErrorNT (node:internal/streams/destroy:169:8)
at emitErrorCloseNT (node:internal/streams/destroy:128:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
errno: -4058,
code: 'ENOENT',
syscall: 'unlink',
path: 'C:\Users\abbas\OneDrive\Desktop\Namaste React\dist\index.html.16372.a'
}

Node.js v20.13.1`

parcel :2.12.0
windows: 11

@chwilliamson-clgx
Copy link

I applied my attempt at a fix to the correct file this time, rather than the AppData/Roaming location, the location in my actual project (node_modules@parcel\fs\lib\index.js). The original error goes away, but I then I got an error in the same method for the rename operation, which I also fixed, but now get an open error below. The crux of these errors is basically file in use issue on Windows. Not sure if this is happening on other OS's. Quite annoying.

Stream error: [Error: EPERM: operation not permitted, open 'C:\dev\repos\xxxxxxxxxx\src\dist\index.7ea68831.js'] {
errno: -4048,
code: 'EPERM',
syscall: 'open',
path: 'C:\dev\repos\xxxxxxxxxxx\src\dist\index.7ea68831.js'
}

@sKopheK
Copy link

sKopheK commented Jul 4, 2024

started to use vite instead and it does not suffer from any of the issues described

@Groov3
Copy link

Groov3 commented Jul 23, 2024

I have this issue on every second save, Node v.18.18.0, Parcel 2.12.0, VSCode, Win 11, latest Chrome.

for anyone who struggling with this, i don't want to spend time to fix parcel, from now i'm just spawning it with pm2 and when parcel fails pm2 restarting it.

@foxydevloper
Copy link

foxydevloper commented Oct 29, 2024

happening every time i update a file that parcel is serving
windows 10, node v22.10.0 parcel 2.12.0 installed via npm

@JavaBloggs
Copy link

Same issue, reliably reproducable:

node:fs:1871
  binding.unlink(getValidatedPath(path));
          ^

Error: ENOENT: no such file or directory, unlink 'C:

Played around a bit, updated my environment, played around some more... It only happens now when I save a change to the entry file for a second time... i.e. It does not matter how many times I save index.html or how fast, if nothing has changed, however make one change and save it, fine, (even repeated fast saves without a second change fine)
make a second change and save it, crash:

May try @DarrenDanielDay 's fix to export the index.html code to a different file...

My environment:
SoftwareVersion
Parcel2.12.0
Node.js22.9.0
npm10.8.3
Operating SystemWindows 11

@JavaBloggs
Copy link

UPDATE: So... I cleaned up everything today... uninstalled parcel, etc.. rebooted... got back to it, and all was fine UNTIL I put the hot module code in:

if (module.hot) {
   module.hot.accept();
}

then everything wen't wrong again... :/
adter that taking out the hot module code didn't help... but running parcel with --no-cache did.

obviously there's still issues but I hope this is useful to someone who's having their day ruined by parcel, lol

@sergejostir
Copy link

Still the same issue two years later on version 2.12.0.

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.