我已将 Web 部件部署到网站集(Web 部件的设计目标),但我收到了表单上 3 个特定功能的错误。我将 sp.web 用于这些功能。
- 我创建了一个使用此功能的“Hello User ”:
public _getUser() {
sp.web.currentUser.get().then((user) => {
this.setState({
CurrentUserTitle: user.Title,
FullName: user.Title,
CurrentUser: user.LoginName,
CurrentUserID: user.Id,
CurrentUserEmail: user.Email,
}
- 使用 SP 列表填充的部门列表下拉列表。
public _getDepartments() {
sp.web.lists.getByTitle("Departments").items.get().then((items: any[]) => {
let returnedDepts: IDropdownOption[] = items.map((item) => { return { key: item.Title, text: item.Title }; });
this.setState({ DepartmentsList: returnedDepts });
});
}
- 提交按钮。功能:
private _onSubmit() {
sp.web.lists.getByTitle('Data and Report Form').items.add({
FullName: this.state.FullName,
UniId: this.state.UniId,
Email: this.state.UserEmail,
Phone: this.state.PhoneNo,
Department: this.state.SelectedDept,
SubDepartment: this.state.SubDepartment,
StartDate: this.state.StartDate,
DiscoveryDate: this.state.DateOfDiscovery,
Details: this.state.IncidentDetails,
PersonalData: this.state.PersonalData
}).then((iar: ItemAddResult) => {
console.log(iar);
let list = sp.web.lists.getByTitle('Data and Report Form');
list.items.getById(iar.data.Id).update({
Title: 'DIBR'+iar.data.Id,
});
this.setState({
JobRef: iar.data.Id,
});
});
}
该表单在要部署的实际站点上提供的非本地 SharePoint 工作台中完美运行。当作为包部署到站点本身并作为 Web 部件添加时,它现在显示以下错误:
HTTP404: NOT FOUND - 服务器没有找到与请求的 URI(统一资源标识符)匹配的任何内容。(获取)GET - https://myDomain.sharepoint.com/sites/IncidentReporting/SitePages/_api/web/currentuser
HTTP404: NOT FOUND - 服务器没有找到与请求的 URI(统一资源标识符)匹配的任何内容。(Fetch)GET - https://myDomain.sharepoint.com/sites/IncidentReporting/SitePages/_api/web/lists/getByTitle ('Departments')/items
尝试提交时收到类似的消息。AI 说,这些都在非本地工作台上工作。
额外细节:
如果我将 web 部件作为 web 部件添加到现代网站的主页,我会收到这些错误(与将 web 部件添加到页面时的错误不同):
HTTP404: NOT FOUND - 服务器没有找到与请求的 URI(统一资源标识符)匹配的任何内容。(Fetch)GET - https://MyDomain.sharepoint.com/sites/_api/web/lists/getByTitle ('Departments')/items
HTTP404: NOT FOUND - 服务器没有找到与请求的 URI(统一资源标识符)匹配的任何内容。(获取)GET - https://MyDomain.sharepoint.com/sites/_api/web/currentuser
如您所见,它缺少 URL 中的实际站点。为什么有区别?
有没有人知道为什么它在部署时表现不同?如果我将 Web 部件放在网站集的不同区域,为什么会显示不同的错误。
更新:我试图使用这个:
import pnp from "sp-pnp-js";
public onInit(): Promise<void> {
return super.onInit().then(_ => {
pnp.setup({
spfxContext: this.context
});
});
}
但我不知道如何实现它,因为 onInit 是 Angular 不是吗?
帮助!
吨