【发布时间】:2020-07-27 10:35:34
【问题描述】:
我正在尝试在标记编辑器中获取 Katex, https://github.com/markedjs/marked/issues/1538 从上面的链接中获取代码,效果很好!
const marked = require('marked');
const katex = require('katex'); // external
const renderer = new marked.Renderer();
function mathsExpression(expr) {
if (expr.match(/^\$\$[\s\S]*\$\$$/)) {
expr = expr.substr(2, expr.length - 4);
return katex.renderToString(expr, { displayMode: true });
} else if (expr.match(/^\$[\s\S]*\$$/)) {
expr = expr.substr(1, expr.length - 2);
return katex.renderToString(expr, { isplayMode: false });
}
}
但我想将 katex 作为单独的模块加载,所以我尝试使用 webpack 中的外部组件:https://webpack.js.org/configuration/externals/
output: {
path: PATH(isDev),
filename: "bundle.js",
library: "BUNDLE",
libraryExport: "default",
libraryTarget: "umd",
globalObject: "this",
},
externals: {
katex: {
root: "katex",
commonjs2: "katex",
commonjs: "katex",
amd: "katex",
},
},
但上面代码中的 katex 是未定义的,但它在 HTML 文件之外可用。因为我已经添加了 katex js 文件
<script
src="../katex/katex.min.js"
integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4"
crossorigin="anonymous"
></script>
我想我在这里遗漏了一些东西......你能帮我吗?谢谢
【问题讨论】:
-
你能把webpack创建的
const katex = require('katex'); // external贴出来吗?没有映射的捆绑包?至少生成 katex 的__webpack__require____ 命令? -
另外,html中../katex/katex.min.js的脚本标签是否定义在生成的主块入口点的脚本标签之前?否则
window.katex可能会在require('katex')运行后生成 -
var katex = __webpack_require__(/*! katex */ \"katex\"); // 外部的,是的,katex.min 放在头部.. 主要入口点在 body 的末尾!
-
您运行的是什么版本的 katex?在最新的
katex.min.js的路径是:node_modules\katex\dist\katex.min.js -
version: "0.12.0" .. 我已经下载到本地并使用 ../katex/katex.min.js