Obsidian.md 插件:''obsidian' 未定义'

Obsidian.md Plugins: ''obsidian' not defined'

我目前正在为 obsidian.md 编写一个插件,用于在代码块内呈现数学函数。我使用 webpack 来捆绑像 yaml 和 function-plot 这样的节点库。在配置中,我添加了 'obsidian' 作为外部。该插件构建时带有关于包大小的警告,但这并不重要,因为它无论如何都是本地的。当我添加插件时,它总是显示“'obsidian' 未定义”。估计是在全局范围内找黑曜石,找不到?这是回购协议:https://github.com/leonhma/obsidian-functionplot 你知道如何正确配置 webpack 吗?可能有一些非常简单的修复方法,但我也是打字稿、webpack 和开发黑曜石插件的新手..

感谢@håkon-hægland 的建议(我为什么没想到?)。首先,webpack 生成的文件看起来像

function(obsidian) {
... (around 300kb code)
}(obsidian);

,所以 webpack 试图访问一些名为 'obsidian' 的全局对象。 webpack.config.js 中的重要部分是

...
externals: [
    obsidian: 'obsidian'
],
...

根据你的建议,我查看了另一个仓库,他们使用

...
externals: [
    obsidian: 'commonjs2 obsidian'
],
...

这解决了我的问题,现在黑曜石已在运行时正确导入。只是张贴这个以防其他人遇到这个问题,因为我自己找不到现有的答案。

PS:对于那些感兴趣的人,因为您肯定正在开发黑曜石插件:将 output.libraryTarget 设置为 commonjscommonjs2 在webpack 配置。