Opened 3 years ago

Last modified 16 months 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 Maxim Dounin, 3 years ago

For the record, a few relevant links:

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.

comment:2 by Maxim Dounin, 2 years ago

Component: documentationother

comment:4 by Mathias Bynens, 2 years ago

This is now defined by RFC 9239: https://www.rfc-editor.org/rfc/rfc9239 Two changes are needed in the nginx codebase:

  1. First, the recommended MIME type for JavaScript is now text/javascript.
  2. 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?

Note: See TracTickets for help on using tickets.