我在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 --ship
和gulp package-solution --ship
部署我的网站时,我收到了错误消息!
我还尝试了 cdnBasePath 的以下值:
请注意:" PublicCDN"是SiteAssets库下的文件夹。
技术细节
[SPLoaderError.loadComponentError]: ***无法加载组件" 63fefa07-d133-4d8b-beba-e4a961675cad" (SimpleContactFormWebPart)。原始错误:***无法加载URL ' https://publiccdn.sharepointonline.com/avvenireinc.sharepoint.com/sites/14480077efdd98d1f7ac72f606b8b39cd9fcec4dbae7db146cdded624b48b5c09c1eee47/PublicCDN/SimpleContactFormWebPart/simplecontactformwebpart-simplecontactformwebpartstrings_en-us_42a0f6681da2dc33b87df83d67355874.js' for resource' SimpleContactFormWebPartStrings'在组件中 ' 63fefa07-d133-4d8b-BEBA-e4a961675cad' (SimpleContactFormWebPart)。 有一个网络问题。这可能是HTTPS的问题 证书。确保您拥有正确的证书。
如何定义CDN路径以便SharePoint可以找到本地化文件!?
编辑:删除本地化文件及其引用后,我现在收到以下错误,这似乎表明我运行gulp bundle --ship
时实际上没有部署任何内容:
[SPLoaderError.loadComponentError]:***无法加载组件 " 63fefa07-d133-4d8b-BEBA-e4a961675cad" (SimpleContactFormWebPart)。 原始错误:***无法加载URL ' https://publiccdn.sharepointonline.com/mycompany.sharepoint.com/sites/MySite/SubSite/SiteAssets/PublicCDN/simple-contact-form-web-part_cea1554eb41a7c3ea6a3ee01291a7e17.js' for resource' simple-contact-form-web-part'在组件中 ' 63fefa07-d133-4d8b-BEBA-e4a961675cad' (SimpleContactFormWebPart)。 有一个网络问题。这可能是HTTPS的问题 证书。确保您拥有正确的证书。
答案 0 :(得分: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 = $
})