Summernote 和 Electron:未捕获的错误:找不到模块“jquery”

Posted

技术标签:

【中文标题】Summernote 和 Electron:未捕获的错误:找不到模块“jquery”【英文标题】:Summernote and Electron: Uncaught Error: Cannot find module 'jquery' 【发布时间】:2017-08-10 11:14:49 【问题描述】:

我正在尝试在Electron 应用程序中使用Summernote,但是当我在我的项目中包含summernote.js 时,我不断收到此错误:

未捕获的错误:在 Module._resolveFilename 处找不到模块“jquery” (module.js:470:15) 在 Function.Module._resolveFilename (C:\Users\me\AppData\Roaming\npm\node_modules\electron\dist\resources\electron.asar\common\reset-search-paths.js:35:12) 在 Function.Module._load (module.js:418:25) 在 Module.require (module.js:498:17) 在需要 (internal/module.js:20:19) 在 file:///C:/Users/me/projects/FO/dist/vendors/summernote/summernote.js:18:30 在 file:///C:/Users/me/projects/FO/dist/vendors/summernote/summernote.js:23:2

我已经在我的项目中包含了 jQuery,并且我正在使用其他 jQuery 插件没有任何问题:

<script>
    window.$ = window.jQuery = require('./vendors/jquery-1.12.4-dist/jquery-1.12.4.min.js');
</script>

更新:这只发生在 0.6.16 以上的 Summernote 版本中。我最初使用的是 0.8.2,当我将版本更改为 0.6.16 时,错误消失了。

有什么办法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

旧的 summernote.js 看起来像这样:

if (typeof define === 'function' && define.amd) 
    // AMD. Register as an anonymous module.
    define(['jquery'], factory);
 else 
    // Browser globals
    factory(window.jQuery);

新的看起来像这样:

if (typeof define === 'function' && define.amd) 
    // AMD. Register as an anonymous module.
    define(['jquery'], factory);
 else if (typeof module === 'object' && module.exports) 
    // Node/CommonJS
    module.exports = factory(require('jquery'));
 else 
    // Browser globals
    factory(window.jQuery);

因为 electron 包含 require() 它尝试像节点模块一样加载它并失败。您可以通过仅注释节点的部分来解决此问题。

【讨论】:

【参考方案2】:
<script src="../../node_modules/jquery/dist/jquery.js"></script>
<script src="../../node_modules/jquery/dist/jquery.min.js"></script>
<script>
    if (typeof module === 'object')
         window.module = module; module = undefined;
</script>
<script src="../../node_modules/popper.js/dist/umd/popper.js."></script>
<script src="../../node_modules/popper.js/dist/umd/popper.min.js"></script>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.js"></script>
<script src="../../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<script src="../../node_modules/summernote/dist/summernote.js"></script>
<script src="../../node_modules/summernote/dist/summernote.min.js"></script>
<script>
    $(function ()  $('#editor').summernote(); );
</script>

summernote-lite 不使用引导程序,但是对于 bs4,我们需要它。应以上述方式添加库。加载 js 库的一些时间顺序正在产生问题正在产生问题。如果引导程序需要正确的.js 文件。 -- 这是电子项目中的工作序列

【讨论】:

确实,正如@SurajRao 所说,请编辑您的答案以更新它并删除另一个。

以上是关于Summernote 和 Electron:未捕获的错误:找不到模块“jquery”的主要内容,如果未能解决你的问题,请参考以下文章

我试图在 Electron.js 中单击按钮时打开新窗口,但未捕获 ReferenceError: require is not defined

未捕获的 ReferenceError:未定义要求(电子)

如何修复summernote不是函数?

Reactjs - 未捕获的类型错误:$node.attr(...).tooltip 不是函数

Laravel 5 和 Summernote - 上传的图片未显示

Summernote 文本未存储到数据库中