Estou recebendo este erro depois de atualizar de 11.5.1 para 11.6.2 no CSS sweetalert2, ao montar um componente Vue durante uma execução de teste vue-test-utils mocha-webpack. (que usa JSDOM)
Avise-me se puder fornecer mais detalhes; não tenho certeza de como depurar isso.
Error: Could not parse CSS stylesheet
at exports.createStylesheet (node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js:35:21)
at HTMLStyleElementImpl._updateAStyleBlock (node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js:68:5)
at HTMLStyleElementImpl._childTextContentChangeSteps (node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js:37:12)
at HTMLStyleElementImpl.insertBefore (node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:225:14)
at HTMLStyleElementImpl.insertBefore (node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:202:14)
at HTMLStyleElementImpl.appendChild (node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js:327:17)
at HTMLToDOM._parseWithParse5 (node_modules/jsdom/lib/jsdom/browser/htmltodom.js:60:21)
at HTMLToDOM._doParse (node_modules/jsdom/lib/jsdom/browser/htmltodom.js:47:42)
at HTMLToDOM.appendToNode (node_modules/jsdom/lib/jsdom/browser/htmltodom.js:37:17)
at setInnerHTML (node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js:40:25)
at HTMLStyleElementImpl.set innerHTML [as innerHTML] (node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js:211:5)
at HTMLStyleElement.set [as innerHTML] (node_modules/jsdom/lib/jsdom/living/generated/Element.js:874:29)
at node_modules/sweetalert2/dist/sweetalert2.all.js:1978:1
at Object.<anonymous> (node_modules/sweetalert2/dist/sweetalert2.all.js:1978:1)
[snip]
const { JSDOM } = require("jsdom");
const options = {
runScripts: "dangerously",
resources: "usable"
};
const dom = new JSDOM(`
<html>
<head>
<link href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.18.0/sweetalert2.css" rel="stylesheet" type="text/css" media="all">
</head>
</html>
`, options);
Infelizmente, isso não segue o modelo de problema, portanto, não podemos ajudar. Sinta-se à vontade para editar o OP para fazê-lo, deixe um comentário e podemos reabri-lo.
@domenic atualizado
Perfeito, obrigado!
Infelizmente, parece que isso se deve ao fato de a folha de estilo usar recursos (legítimos) que nosso analisador CSS não suporta. Dado o analisador atual de jsdom, isso resulta em nós descartando a folha de estilo inteira e dando a você um aviso no console.
Não há muito que você possa fazer aqui. Se você achar esta mensagem feia, você pode suprimi-la (e outras mensagens semelhantes) usando as técnicas em https://github.com/jsdom/jsdom#virtual -consoles (este é um "jsdomError"
). A solução de longo prazo é conseguir um analisador CSS melhor, mas isso é muito difícil.
Como solução intermediária, talvez investigue como tornar a mensagem mais expressiva? (Imprime apenas o CSS que não pôde ser analisado?) Dessa forma, a pessoa ficaria mais inclinada a olhar para a adição de suporte para esse recurso CSS específico. No momento, não tenho ideia do que está causando isso.
A menos que você vá mudar para um analisador CSS de terceiros e não queira construir este.
Infelizmente, não obtemos essas informações do nosso analisador CSS :(. E o nosso analisador CSS não é muito bem mantido, por isso não é fácil adicionar suporte para recursos a ele :(. @Zirro tinha um projeto para substitua-o completamente em https://github.com/Zirro/css-object-model, mas nunca foi concluído ...
@domenic Tenho exatamente o mesmo problema, em que meu css é despejado em meu terminal quando estou executando meus testes de AVA. Gostaria de suprimir os erros jsdom como você sugeriu, mas não tenho certeza de onde o código a seguir deve ir (tentei no meu arquivo index.test.js, mas não o está suprimindo):
`const jsdom = require (" jsdom ");
const {JSDOM} = jsdom;
const virtualConsole = new jsdom.VirtualConsole ();
const dom = new JSDOM (` , { virtualConsole });
Alguma ideia de onde isso deve ir? Obrigado
Eu não sei nada sobre ava, desculpe.
@aphofstede Você
@jktravis Acabei de adicionar isso à minha configuração de teste por enquanto :)
// Prevent a lot of "[vuex] unknown mutation type .." logs during tests
const _ = require('lodash')
const originalConsoleError = console.error
console.error = function(msg) {
if(_.startsWith(msg, '[vuex] unknown')) return
if(_.startsWith(msg, 'Error: Could not parse CSS stylesheet')) return
originalConsoleError(msg)
}
eu uso o VirtualConsole, mas esse erro ainda acontece
e no meu ambiente, tenho algum motivo, então não uso https://github.com/jsdom/jsdom/issues/2177#issuecomment -426825829
espero uma opção para ignorar este erro
const jsdom = await JSDOM.fromURL(`http://127.0.0.1:${rootOptions.server.port}${route}`, {
resources: 'usable',
runScripts: 'dangerously',
// @ts-ignore
pretendToBeVisual: true,
includeNodeLocations: true,
referrer,
VirtualConsole: virtualConsole,
});
2:59:38 PM: Error: Could not parse CSS stylesheet
2:59:38 PM: at Object.exports.createStylesheet (/opt/build/repo/node_modules/prerenderer-renderer-jsdom/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js:34:21)
2:59:38 PM: at onStylesheetLoad (/opt/build/repo/node_modules/prerenderer-renderer-jsdom/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js:74:13)
2:59:38 PM: at onLoadWrapped (/opt/build/repo/node_modules/prerenderer-renderer-jsdom/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js:53:33)
2:59:38 PM: at Object.check (/opt/build/repo/node_modules/prerenderer-renderer-jsdom/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js:76:23)
2:59:38 PM: at /opt/build/repo/node_modules/prerenderer-renderer-jsdom/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js:119:14
2:59:38 PM: at processTicksAndRejections (internal/process/task_queues.js:89:5) <strong i="11">@import</strong> url(https://fonts.googleapis.com/css?family=M+PLUS+Rounded+1c);<strong i="12">@import</strong> url(https://fonts.googleapis.com/css?family=Audiowide);@-moz-keyframes shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}@-webkit-keyframes shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}@-o-keyframes shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}<strong i="13">@keyframes</strong> shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}.black{background-color:#000!important;border-color:#000!important}.black--text{color:#000!important;caret-color:#000!important}.white{background-color:#fff!important;border-color:#fff!important}.white--text{color:#fff!important;caret-color:#fff!important}.transparent{background-color:transparent!important;border-color:transparent!important}.transparent--text{color:transparent!important;caret-color:transparent!important}.red{background-color:#f44336!important;border-color:#f44336!important}.red--text{color:#f44336!important;caret-color:#f44336!important}.red.lighten-5{background-color:#ffebee!important;border-color:#ffebee!important}.red--text.text--lighten-5{color:#ffebee!important;caret-color:#ffebee!important}.red.lighten-4{background-
Está tendo o mesmo problema aqui - ainda sem resolução?
Esta solução alternativa funciona para mim.
const virtualConsole = new jsdom.VirtualConsole();
virtualConsole.sendTo(console, { omitJSDOMErrors: true });
virtualConsole.on("jsdomError", (err) => {
if (err.message !== "Could not parse CSS stylesheet") {
console.error(err);
}
});
Comentários muito úteis
@jktravis Acabei de adicionar isso à minha configuração de teste por enquanto :)
// Prevent a lot of "[vuex] unknown mutation type .." logs during tests const _ = require('lodash') const originalConsoleError = console.error console.error = function(msg) { if(_.startsWith(msg, '[vuex] unknown')) return if(_.startsWith(msg, 'Error: Could not parse CSS stylesheet')) return originalConsoleError(msg) }