Skip to content
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

Parser throws an error if CSS parsing fails #125

Closed
linkelvin11 opened this issue Oct 18, 2019 · 4 comments
Closed

Parser throws an error if CSS parsing fails #125

linkelvin11 opened this issue Oct 18, 2019 · 4 comments
Labels
question Further information is requested

Comments

@linkelvin11
Copy link

Expected Behavior

The parsing error should be caught and handled.

Actual Behavior

html-react-parser throws an error and JS execution stops.

Steps to Reproduce

Attempt to parse a tag with an invalid style attribute.
The CSS parser should throw an error:

Error: undefined:1:30: property missing ':'
    at error (/home/runner/node_modules/inline-style-parser/index.js:103:15)
    at declaration (/home/runner/node_modules/inline-style-parser/index.js:208:37)
    at declarations (/home/runner/node_modules/inline-style-parser/index.js:239:20)
    at module.exports (/home/runner/node_modules/inline-style-parser/index.js:250:10)
    at StyleToObject (/home/runner/node_modules/style-to-object/index.js:21:22)
    at cssToJs (/home/runner/node_modules/html-react-parser/lib/attributes-to-props.js:83:3)
    at attributesToProps (/home/runner/node_modules/html-react-parser/lib/attributes-to-props.js:64:19)
    at domToReact (/home/runner/node_modules/html-react-parser/lib/dom-to-react.js:54:15)
    at HTMLReactParser (/home/runner/node_modules/html-react-parser/index.js:19:10)
    at evalmachine.<anonymous>:6:16

Example HTML string: <p style="font-family: &amp;quot; franklin gothic itc&amp;quot;,helvetica,arial,sans-serif;">test</p>

Reproducible Demo

Repl.it: https://repl.it/repls/WhitesmokeAggravatingScandisk

@remarkablemark
Copy link
Owner

Thanks for opening this issue @linkelvin11

The error you see is expected behavior since this parser does not handle sanitization of invalid HTML or CSS (see FAQ).

Take a look at #124 to see some examples of how to sanitize the markup before parsing.

I also created a Repl.it that fixes your example using sanitize-html.

@remarkablemark remarkablemark added the question Further information is requested label Oct 19, 2019
@linkelvin11
Copy link
Author

Ah ok, I had missed that section of the FAQ.

I was able to find a sanitize-html config that worked for my use case.

Thanks!

@shiglet
Copy link

shiglet commented Mar 4, 2020

Hello @linkelvin11,

Can you share that sanitize-html config ? Does it keep styling when it's valid or ?

Thank you :)

@linkelvin11
Copy link
Author

Hello @linkelvin11,

Can you share that sanitize-html config ? Does it keep styling when it's valid or ?

Thank you :)

I used the allow all config specified in the sanitize-html docs.

https://www.npmjs.com/package/sanitize-html#what-if-i-want-to-allow-all-tags-or-all-attributes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants