将 unsafeHTML 与 lit-element 一起使用时出错
Error when using unsafeHTML with lit-element
这是我的代码:
import {customElement, LitElement, html, property, css} from 'lit-element';
import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
@customElement('my-component')
export class myComponent extends LitElement {
render() {
const markup = '<div>Some HTML to render.</div>';
return html`
${unsafeHTML(markup)}
`;
}
}
但是当我在浏览器上 运行 时,我得到这样的错误:
part => { if (!(part instanceof NodePart)) { throw new Error('unsafeHTML can only be used in text bindings'); } const previousValue = previousValues.get(part); if (previousValue !== undefined && isPrimitive(value) && value === previousValue.value && part.value === previousValue.fragment) { return; } const template = document.createElement('template'); template.innerHTML = value; // innerHTML casts to string internally const fragment = document.importNode(template.content, true); part.setValue(fragment); previousValues.set(part, { value, fragment }); }
enter image description here
我的代码很简单,但我仍然遇到错误,所以任何人都可以向我建议如何让它工作。
这种类型的error通常是由多个版本的lit-html在同一个项目中交互引起的。一个常见的情况是当您开始使用 LitElement
(它在内部使用 lit-html
的一个版本)然后单独安装 lit-html
以便能够使用内置指令。这有时会导致重复,可以通过 运行
轻松修复
$ npm dedupe
此外,对于 yarn 用户:
$ yarn install --flat
在这种情况下会有所帮助。
这是我的代码:
import {customElement, LitElement, html, property, css} from 'lit-element';
import {unsafeHTML} from 'lit-html/directives/unsafe-html.js';
@customElement('my-component')
export class myComponent extends LitElement {
render() {
const markup = '<div>Some HTML to render.</div>';
return html`
${unsafeHTML(markup)}
`;
}
}
但是当我在浏览器上 运行 时,我得到这样的错误:
part => { if (!(part instanceof NodePart)) { throw new Error('unsafeHTML can only be used in text bindings'); } const previousValue = previousValues.get(part); if (previousValue !== undefined && isPrimitive(value) && value === previousValue.value && part.value === previousValue.fragment) { return; } const template = document.createElement('template'); template.innerHTML = value; // innerHTML casts to string internally const fragment = document.importNode(template.content, true); part.setValue(fragment); previousValues.set(part, { value, fragment }); }
enter image description here
我的代码很简单,但我仍然遇到错误,所以任何人都可以向我建议如何让它工作。
这种类型的error通常是由多个版本的lit-html在同一个项目中交互引起的。一个常见的情况是当您开始使用 LitElement
(它在内部使用 lit-html
的一个版本)然后单独安装 lit-html
以便能够使用内置指令。这有时会导致重复,可以通过 运行
$ npm dedupe
此外,对于 yarn 用户:
$ yarn install --flat
在这种情况下会有所帮助。