-
Notifications
You must be signed in to change notification settings - Fork 3.4k
documentation to show ESM import and usage #1692
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
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]>
Ran into this issue today building my site with Vue 2 and the Vue CLI. Been developing locally for months and using
When I deployed to production this exploded, marked was not available. Had to replace it with:
Took me a while to figure this out. |
I just tried it and it works to import in node v14 // index.js
import marked from "marked";
console.log(marked("# test"));
// <h1 id="test">test</h1> It might be different if you are using a bundler. |
I think this is related but in SvelteKit next.89 I now get errors when importing marked that I didn't get before and is a complex problem in consideration of SSR.
results in:
This problem does not happen if I navigate to the page which uses marked from another page. If I go there directly the problem is 100% reproducible. |
This wsa fixed in #2227 |
I'm still seeing some weirdness here on the latest. (4.0.4) Code compile fine, works in browser, VSCode shows this. This is a repo/file in question https://github.com/leveluptuts/auto-form/blob/main/src/lib/Markdown.svelte |
@stolinski it doesn't look like you have @types/marked installed in that repo. My guess is without the actual types Typescript is assuming it is a cjs module because main points to a .cjs file. |
Hi you all, i need to import ans use marked in my react project, so when i compile this is the message it gives me, some one can help me please : export 'default' (imported as 'Marked') was not found in 'marked' (possible exports: Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens) |
Use |
Uh oh!
There was an error while loading. Please reload this page.
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
The text was updated successfully, but these errors were encountered: