Skip to content

docs: clarify MIME type changes when migrating from Express 4 to 5 #1903

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

Open
wants to merge 5 commits into
base: gh-pages
Choose a base branch
from

Conversation

achaljhawar
Copy link

This PR improves the Express 5 migration guide by documenting an important change in MIME type handling that affects users migrating from Express 4 to Express 5.

Issue #1880

When migrating from Express 4 to Express 5, we discovered that JavaScript files served via res.sendFile() now return a Content-Type of "text/javascript" instead of the previous "application/javascript". This change occurs because Express 5 switched from its internal MIME type handling to the mime-types package.

Changes

  • Added explanatory notes to the express.static.mime section explaining that this change affects other methods like res.sendFile()
  • Added a specific note to the res.sendfile() section warning about potential Content-Type differences
  • Provided concrete examples of the JavaScript MIME type change to help users anticipate similar issues

These documentation improvements will help users understand and prepare for potential MIME type differences when upgrading to Express 5, even if they weren't directly using express.static.mime.

Developer's Certificate of Origin 1.1 is acknowledged and agreed to.

@achaljhawar achaljhawar requested review from a team as code owners May 14, 2025 20:47
Copy link

netlify bot commented May 14, 2025

Deploy Preview for expressjscom-preview ready!

Name Link
🔨 Latest commit 18fea5c
🔍 Latest deploy log https://app.netlify.com/projects/expressjscom-preview/deploys/682830b896ab62000854af23
😎 Deploy Preview https://deploy-preview-1903--expressjscom-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@achaljhawar
Copy link
Author

@bjohansebas I have added it back

@@ -345,6 +345,8 @@ The `router.param(fn)` signature was used for modifying the behavior of the `rou
In Express 5, `mime` is no longer an exported property of the `static` field.
Use the [`mime-types` package](https://github.com/jshttp/mime-types) to work with MIME type values.

**Important:** This change affects not only direct usage of `express.static.mime` but also other Express methods that rely on MIME type detection, such as `res.sendFile()`. For example, JavaScript files (.js) will now be served with the MIME type "text/javascript" instead of "application/javascript" as in Express 4. Other file types may also have different MIME types than before. If your application depends on specific MIME types, you should test thoroughly after upgrading.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend listing the MIME types that changed, instead of saying “try which ones changed.”

<h4 id="res.sendfile">res.sendfile()</h4>

The `res.sendfile()` function has been replaced by a camel-cased version `res.sendFile()` in Express 5.

**Note:** In Express 5, `res.sendFile()` uses the `mime-types` package for MIME type detection, which may return different Content-Type values than Express 4 did. For example, JavaScript files (.js) will now be served with "text/javascript" instead of "application/javascript". If your application depends on specific MIME types, you should test thoroughly after upgrading.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@achaljhawar
Copy link
Author

@bjohansebas I have done the changes you asked me to do.

@achaljhawar achaljhawar requested a review from bjohansebas May 17, 2025 06:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants