core icon indicating copy to clipboard operation
core copied to clipboard

Example doesn't work

Open legodude17 opened this issue 3 years ago • 3 comments

  • remark-embedder-core version: 3.0.1
  • node version: 18.4.0
  • npm version: 8.13.0

Relevant code or config

Example in the README.

What you did: Ran the code.

What happened:

Got an error:

import remark from 'remark'
       ^^^^^^
SyntaxError: The requested module 'remark' does not provide an export named 'default'
    at ModuleJob._instantiate (node:internal/modules/esm/module_job:128:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:194:5)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:409:24)
    at async loadESM (node:internal/process/esm_loader:85:5)
    at async handleMainPromise (node:internal/modules/run_main:61:12)

Node.js v18.4.0

After fixing this, it runs but does not embed properly.

After fixing that, the URL is completely removed.

Suggested solution:

For the first issue, you must wrap remark in brackets.

For the second, you need to add a .default when using remarkEmbedder.

For the third, you need to add { sanitize: false } when using the remark-html plugin, since otherwise it's sanitization will remove the iframe.

legodude17 avatar Oct 12 '22 01:10 legodude17

Thanks @legodude17 ! This was so frustrating

gabriel-rh avatar Nov 30 '22 18:11 gabriel-rh

Hey @legodude17 can you please tell where should I make step 2 and 3 changes. I would really appreciate if you can give me an example.

Thank you so much.

rafter-GMSVK avatar Feb 06 '23 10:02 rafter-GMSVK

For step 2, it is whenever you use remarkEmbedder you must instead write remarkEmbedder.default. For step 3, when you use html, you can pass it options as the second argument of .use, where you have to say { sanitize: false}. Starting with the go function from the example, the result (that should actually work), should look like this:

async function go() {
  const result = await remark()
    .use(remarkEmbedder.default, {
      transformers: [CodeSandboxTransformer],
    })
    .use(html, { sanitize: false })
    .process(exampleMarkdown)

  console.log(result.toString())
}

legodude17 avatar Feb 13 '23 22:02 legodude17