首页 文章

如何在SPFx中使用本地化资源?

提问于
浏览
0

我在config.json中定义了以下部分:

"externals": {
    "jquery": {
      "path": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js",
      "globalName": "jQuery"
    },
    "bootstrap": {
      "path": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/js/bootstrap.min.js",
      "globalName": "jQuery"
    }
  },
  "localizedResources": {
    "SimpleContactFormWebPartStrings": "lib/webparts/simpleContactForm/loc/{locale}.js"
  }

在我的write-manifests.json中,我有以下内容:

{
  "$schema": "https://dev.office.com/json-schemas/spfx-build/write-manifests.schema.json",
  "cdnBasePath": "https://publiccdn.sharepointonline.com/mycompany.sharepoint.com/sites/{super long ID for the CDN}/PublicCDN/SimpleContactFormWebPart/"
}

但是,当我使用 gulp bundle --shipgulp package-solution --ship 部署我的网站时,我收到错误!

我也为 cdnBasePath 尝试了以下值:

请注意:“PublicCDN”是SiteAssets库下的文件夹 .

Technical Details

[SPLoaderError.loadComponentError]:***无法加载组件“63fefa07-d133-4d8b-beba-e4a961675cad”(SimpleContactFormWebPart) . 原来的错误:***无法加载的组件资源“SimpleContactFormWebPartStrings” URL“https://publiccdn.sharepointonline.com/avvenireinc.sharepoint.com/sites/14480077efdd98d1f7ac72f606b8b39cd9fcec4dbae7db146cdded624b48b5c09c1eee47/PublicCDN/SimpleContactFormWebPart/simplecontactformwebpart-simplecontactformwebpartstrings_en-us_42a0f6681da2dc33b87df83d67355874.js” '63fefa07-d133-4d8b-beba-e4a961675cad'(SimpleContactFormWebPart) . 有一个网络问题 . 这可能是HTTPS证书的问题 . 确保您拥有正确的证书 .

如何定义CDN路径以便SharePoint可以找到本地化文件!?

Edit: 删除本地化文件及其引用后,我现在收到以下错误,这似乎表明当我运行 gulp bundle --ship 时实际上没有部署任何内容:

[SPLoaderError.loadComponentError]:***无法加载组件“63fefa07-d133-4d8b-beba-e4a961675cad”(SimpleContactFormWebPart) . 原始错误:***无法加载网址“https://publiccdn.sharepointonline.com/mycompany.sharepoint.com/sites/MySite/SubSite/SiteAssets/PublicCDN/simple-contact-form-web-part_cea1554eb41a7c3ea6a3ee01291a7e17.js”资源'simple-contact-form-web-part'在组件'63fefa07-d133-4d8b-beba-e4a961675cad'(SimpleContactFormWebPart)中 . 有一个网络问题 . 这可能是HTTPS证书的问题 . 确保您拥有正确的证书 .

1 回答

  • 0

    由于您使用的是CDN参考,我建议使用 SPComponentLoader . 下面是jQuery的示例(在此处替换您的实际CDN路径):首先导入模块 import { SPComponentLoader } from '@microsoft/sp-loader' 现在添加此行以加载您的jQuery . 这是异步调用 SPComponentLoader.loadScript('https://code.jquery.com/jquery-3.2.1.min.js')

    SPComponentLoader.loadScript(
          'https://code.jquery.com/jquery-3.2.1.min.js'
        ).then(($: any) => {
          sayHello();
    //access jQuery object with window['jQuery'] or declare variable inside your class as public jQuery: any, and assign $ as this.jQuery = $
    })
    

相关问题