Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign updocumentation to show ESM import and usage #1692
Comments
marked.esm is using a default export instead of a named export. so the proper syntax would be: import marked from 'marked' // note that this is a definition, so you can give it any name you want But i think you are raising an important point: Why was a default export chosen over a named export? It removes many of the advantages of using esm. As the result is still just some convoluted mess of properties. It would be much more userfriendly with well organized named exports as they work excellently with TS-language-features. I'll file a seperate issue about that in a bit |
I tried that syntax as well, but errors with "'default' is not exported by node_modules/marked/lib/marked.js" detail below:
Looking at lib/marked.esm.js#L2356 it exports default, but if I try Uncaught ReferenceError: marked is not defined with |
have you tried |
Yes, that errors with "marked is not defined". Short term I'll just add
the library from an html script tag, but would be nice if modules worked.
…On Sun, May 31, 2020 at 8:40 PM Tony Brix ***@***.***> wrote:
have you tried import marked from marked/lib/marked.esm.js?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#1692 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAADAOG7IRJJFJVOXBU64ULRUMPMHANCNFSM4NO6IQ2A>
.
|
I don't usually use esm since it is still experimental in node. If anyone wants to create a PR I would be happy to review it. |
Here's the usage import Marked from '../node_modules/marked/lib/marked.esm.js'
Marked(rawMarkdown) I'm using it in the |
cjs-require/esm-import can be automatically handled by specifying an Short explanation{
"exports": {
[exportPath]: {
"import": "./path/to/file.mjs",
"require": "./path/to/file.cjs"
}
}
} So for marked it would be:{
"exports": {
".": {
"import": "./lib/marked.esm.mjs", // `.mjs`-extention is needed
"require": "./src/marked.js"
}
}
} I'll file a PR for that shortly |
Signed-off-by: kilian <[email protected]>
Describe the bug
I'm using rollup to bundle dependencies (for a Svelte framework web app) but having trouble importing and using markedjs. It appears the library was recently ported to ESM modules, but I don't see any documentation on how to use as such. The standard syntax to import ES6 modules give me errors:
import { marked } from 'marked.esm';
returns
(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
marked.esm (imported by src/parser/parser.js)
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
marked.esm (guessing 'marked')
and
import { marked } from 'marked';
returns
bundles src/main.js → public/build/bundle.js...
(!)
this
has been rewritten toundefined
https://rollupjs.org/guide/en/#error-this-is-undefined
node_modules/marked/lib/marked.js
14: typeof define === 'function' && define.amd ? define(factory) :
15: (global = global || self, global.marked = factory());
16: }(this, (function () { 'use strict';
^
17:
18: function _defineProperties(target, props) {
[!] Error: 'marked' is not exported by node_modules/marked/lib/marked.js, imported by src/parser/parser.js
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
src/parser/parser.js (11:9)
To Reproduce
npm install marked
in a Svelte js file that's bundled by rollup:
import { marked } from 'marked'; // or similar variations
Expected behavior
no import errors