Create-react-app: Support .mjs file extensions

Created on 4 Oct 2017  ·  3Comments  ·  Source: facebook/create-react-app

Is this a bug report?

Yes?

Can you also reproduce the problem with npm 4.x?

Yes

Which terms did you search for in User Guide?

mjs, extension, static, media

Environment

  1. node -v: v6.2.2
  2. npm -v:3.10.10
  3. yarn --version (if you use Yarn):
  4. npm ls react-scripts (if you haven’t ejected):
[email protected] /Users/joe_lencioni/waypoint-test
└── [email protected]

Then, specify:

  1. Operating system: macOS Sierra
  2. Browser and version (if relevant): Chrome

Steps to Reproduce

(Write your steps here:)

  1. Clone https://github.com/colloquet/waypoint-test.git
  2. npm install
  3. npm start

Expected Behavior

Page loads without errors.

Actual Behavior

Page shows error: "InvalidCharacterError: Failed to execute 'createElement' on 'Document': The tag name provided ('/static/media/index.73a4b08a.mjs') is not a valid name."

screen shot 2017-10-04 at 11 33 05 am

Reproducible Demo

See repro instructions above

I believe this is happening because webpack has been configured to treat files with filenames ending in .mjs as static files, so when you import one instead of returning a reference to the export, it will output the contents in static/media and return the path to that file as a string.

Originally reported: https://github.com/brigade/react-waypoint/issues/221

bug

Most helpful comment

I'm still seeing an issue with destructuring .mjs imports ala import { something } from 'my-mjs-module' where something will be undefined... anyone else?

Note that when I switch the extension from .mjs to .js all is fine!

All 3 comments

Considering Node landed .mjs support in https://github.com/nodejs/node/pull/14369, I'm open to supporting this file format.

I welcome a PR to add support for the extension. 😄

Note, even though the specification states:

[".mjs", ".js", ".json", ".node"]

I'd like to fallback last to .mjs for compatibility reasons until v2.0.0 so there's no breaking change.

I'm still seeing an issue with destructuring .mjs imports ala import { something } from 'my-mjs-module' where something will be undefined... anyone else?

Note that when I switch the extension from .mjs to .js all is fine!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dualcnhq picture dualcnhq  ·  3Comments

barcher picture barcher  ·  3Comments

oltsa picture oltsa  ·  3Comments

Evan-GK picture Evan-GK  ·  3Comments

DaveLindberg picture DaveLindberg  ·  3Comments