Opened 3 years ago
Last modified 2 years ago
#2216 new enhancement
Add .mjs to known JS MIME types
Reported by: | Bradley Meck | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | other | Version: | 1.19.x |
Keywords: | mime js javascript | Cc: | |
uname -a: | Darwin LM-C02YV4YSLVDR 18.7.0 Darwin Kernel Version 18.7.0: Mon Feb 10 21:08:45 PST 2020; root:xnu-4903.278.28~1/RELEASE_X86_64 x86_64 | ||
nginx -V: | nginx version: nginx/1.19.5 |
Description
I was told to make a ticket here per the mailing list thread: http://mailman.nginx.org/pipermail/nginx-devel/2021-July/014176.html
.mjs is supported by Node.js, is in JS specification examples ( E.G. https://tc39.es/ecma262/#sec-hostresolveimportedmodule ), and WHATWG specification examples ( https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-module-system ), and has an upcoming MIME update per IETF ( https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/ ). It is also supported by various existing MIME databases and serves properly on various hosts like Github Pages without custom configuration.
Change History (4)
comment:1 by , 3 years ago
comment:2 by , 3 years ago
Component: | documentation → other |
---|
comment:3 by , 3 years ago
comment:4 by , 3 years ago
This is now defined by RFC 9239: https://www.rfc-editor.org/rfc/rfc9239 Two changes are needed in the nginx codebase:
- First, the recommended MIME type for JavaScript is now
text/javascript
. - Second, the
.mjs
extension is now explicitly registered.
The patch Maxim already pointed to addresses both points. What can we do to help get it reviewed + merged?
For the record, a few relevant links:
.mjs
.Overall seems to be only important in Node.js ecosystem, where the
.js
extension means project-default module type, while.mjs
and.cjs
mean ECMAScript and CommonJS modules, respectively. While it might be usable to distinguish modules from scripts in the web, there is no clear difference. It is also not clear if we need to provide support in the default mime.types.