node.js - 即使我在 config.json 的外部部分中定义,jQuery 也不会作为模块加载

标签 node.js typescript sharepoint spfx

我已经使用 NPM 安装了 jQuery。现在我将其添加到我的外部部分中:

"externals": {
    "jQuery": {
      "path": "/node_modules/jquery/dist/jquery.min.js",
      "globalName": "jQuery1"
    }
}

现在我已经安装了用于轮播和其他漂亮控件的unitegallery。我已经通过 NPM 安装了unitegallery。我添加了如下依赖项:

"externals": {
    "jQuery": {
        "path": "/node_modules/jquery/dist/jquery.min.js",
        "globalName": "jQuery1"
    },
    "UniteGallery": {
        "path": "/src/webparts/carouselControl/unitegallery.min.js",
        "globalName": "UniteGallery",
        "globalDependencies": ["jQuery"]    
    }
}

当我将它们作为 require('jQuery')require('UniteGallery') 加载到我的 .ts 文件中时,会出现错误,如下所示

Resource "jQuery" not found in loader configuration of manifest for component

。我真的很烦恼寻找解决方案。所有博客都说这是唯一的方法。但为什么它给我错误呢?我在这里做错了什么?

最佳答案

使用早期版本的 Visual Studio 代码时,我遇到了这个问题。不是最新的。旧的解决方案现在工作正常。但从那时起我正在做的事情,我不再使用本地引用,而是使用 CDN引用。首先,我正在搜索 winodw['jQuery'] 对象,如果该对象未定义,那么我将使用 SPComponentLoader 函数加载 jQuery。下面是示例代码:

if(typeof(window['jQuery'])=='undefined'){
        SPComponentLoader.loadScript('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js').then(($:any)=>{
            this.jQuery=$;
            this.initSearch();
        });
      }
      else{
        this.jQuery = window['jQuery'];
        this.initSearch();
      }

关于node.js - 即使我在 config.json 的外部部分中定义,jQuery 也不会作为模块加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47151326/

相关文章:

javascript - 如何将混合表更改为 Sequelize?

visual-studio - 缺少 “Deploy” - 按钮 Visual Studio 2012

javascript - 如何处理 typescript 中异步函数的返回值?

angular - '[ngTemplateOutet ]' is working but ' *ngTemplateOutlet' 不是

javascript - 类型 'toMatchSnapshot' 上不存在属性 'Assertion'

jquery - 如何在SharePoint中管理Jquery以避免与其他jquery版本发生冲突

c# - 获取 Sharepoint Online 用户

node.js - 如何在 adonis js 中发送回带有 401 之类状态代码的 json 响应?

node.js - 怎么查 "Exception form Deps recompute"有什么线索呢?

javascript - 如果数组中存在没有最后 "s"的相同单词,则删除单词的最后 "s"