from How to require external libraries in a component helper file? - #2 by merefield
嘿 @merefield – 这是仍然是这样做的方法吗?
我正在尝试引入 qrcode.js 来在浏览器中生成 QRcode。
我被 CSP 阻止了,我不明白为什么这是 CSP 问题,因为它在同一个主机上。这在生产服务器上使用 discourse_theme 进行调试。
我正在将其放入一个初始化程序:
import loadScript from "discourse/lib/load-script";
import { withPluginApi } from "discourse/lib/plugin-api";
// import QRCode from "discourse/lib/qrcode";
export default {
name: "qrcode",
ensureQRCode() {
window.console.log(settings.theme_uploads.QRCode);
return loadScript(settings.theme_uploads.QRCode).then(() => {
return loadScript(settings.theme_uploads.QRCode);
});
},
initialize(container) {
withPluginApi("0.8.7", (api) => {
api.decorateCookedElement((cooked, postWidget) => {
const placeholderNodes = cooked.querySelectorAll(
".d-wrap[data-wrap=qrcode]"
);
this.ensureQRCode();
// const qr = new QRCode(
// document.getElementById("qrcode"),
// "http://jindo.dev.naver.com/collie"
// );
...
而且,如果我不调用 this.ensureQRCode();,该函数似乎不会被调用来加载脚本,而你在你的组件中似乎没有这样做。
脚本是可用的,并且我可以检索它(所以我正确地获取了 about.json 和 /assets/qrcode.js 中的内容),但浏览器拒绝加载它。