我正在创建一个 Sharepoint 框架 Web 部件,并且我正在尝试使用 Aurelia 作为我的 JavaScript 框架。
基本上,我创建了一个 Sharepoint 框架 Web 部件,当使用 Yeoman 创建时,它创建了这个 folder structure。
然后是我的文件(只是一个简单的 hello world):
应用.html
<template>
${message}
</template>
应用程序.js
export class App {
message = 'hello world';
}
主要.ts
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(a => a.setRoot());
}
index.html
<div aurelia-app>
<h1>Loading...</h1>
<h2> ftw </h2>
<script src="jspm_packages/system.js"></script>
<script src="config.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
</div>
还有 helloworld webpart:
import {
BaseClientSideWebPart,
IPropertyPaneSettings,
IWebPartContext,
PropertyPaneTextField
} from '@microsoft/sp-client-preview';
import styles from './HelloWorld.module.scss';
import * as strings from 'helloWorldStrings';
import { IHelloWorldWebPartProps } from './IHelloWorldWebPartProps';
import { configure } from './main';
import * as systemjs from 'systemjs';
import {Aurelia} from 'aurelia-framework';
export default class HelloWorldWebPart extends BaseClientSideWebPart<IHelloWorldWebPartProps> {
public constructor(context: IWebPartContext) {
super(context);
}
public render(): void {
if (this.renderedOnce === false) {
this.domElement.innerHTML = require('./index.html');
}
}
protected get propertyPaneSettings(): IPropertyPaneSettings {
return {
pages: [
{
header: {
description: strings.PropertyPaneDescription
},
groups: [
{
groupName: strings.BasicGroupName,
groupFields: [
PropertyPaneTextField('description', {
label: strings.DescriptionFieldLabel
})
]
}
]
}
]
};
}
}
代码在页面中呈现 HTML,但没有消息。
我在浏览器控制台中没有看到任何错误。
我用 NPM 没有 jspm 安装了 Aurelia。执行 gulp serve
没有显示任何编译错误。
我还在 typings 子文件夹中创建了一个 typings 文件“aurelia.d.ts”。
我认为我的主要问题出在 index.html 中,因为它引用了 2 个 JavaScript 文件,但我不确定如何引用它们,因为它们位于 NPM 模块文件夹中,我认为它们不存在在执行 gulp serve
时部署。
顺便说一下,这是我的 config.json:
{
"entries": [
{
"entry": "./lib/webparts/helloWorld/HelloWorldWebPart.js",
"manifest": "./src/webparts/helloWorld/HelloWorldWebPart.manifest.json",
"outputPath": "./dist/hello-world.bundle.js"
}
],
"externals": {
"@microsoft/sp-client-base": "node_modules/@microsoft/sp-client-base/dist/sp-client-base.js",
"@microsoft/sp-client-preview": "node_modules/@microsoft/sp-client-preview/dist/sp-client-preview.js",
"@microsoft/sp-lodash-subset": "node_modules/@microsoft/sp-lodash-subset/dist/sp-lodash-subset.js",
"office-ui-fabric-react": "node_modules/office-ui-fabric-react/dist/office-ui-fabric-react.js",
"react": "node_modules/react/dist/react.min.js",
"react-dom": "node_modules/react-dom/dist/react-dom.min.js",
"aurelia": "node_modules/aurelia-framework/dist/aurelia-framework.js",
"systemjs" : "node_modules/systemjs/dist/systemjs/system.js"
},
"localizedResources": {
"helloWorldStrings": "webparts/helloWorld/loc/{locale}.js"
}
}
控制台错误:
FetchProvider.ts:30 GET https://softwares-macbook-pro.local:4321/sites/workbench/_api/Microsoft.SharePoint.Portal.SuiteNavData.GetSuiteNavData?v=2&Locale=undefined 404 (Not Found)FetchProvider.fetch @ FetchProvider.ts:30BasicHttpClient.fetchCore @ BasicHttpClient.ts:68HttpClient._fetchWithInstrumentation @ HttpClient.ts:183HttpClient.fetch @ HttpClient.ts:141HttpClient.get @ HttpClient.ts:154OnPremSuiteNavDataSource.loadData @ OnPremSuiteNavDataSource.ts:42SuiteNavManager._loadSuiteNavFromServer @ SuiteNavManager.ts:148SuiteNavManager._getSuiteNavModel @ SuiteNavManager.ts:129SuiteNavManager.loadSuiteNav @ SuiteNavManager.ts:106(anonymous function) @ Shell.ts:164Shell._startApplication @ Shell.ts:145Shell.start @ Shell.ts:141(anonymous function) @ SPModuleLoader.ts:178 TraceLogger.ts:147 [OnPremSuiteNavDataSource] Failed to retrieve Hybrid SuiteNavData TraceLogger.ts:147 [SuiteNavManager] SuiteNavManager loadData Failed to retrieve Hybrid SuiteNavData FetchProvider.ts:30 POST https://softwares-macbook-pro.local:4321/sites/workbench/_api/contextinfo 405 (Method Not Allowed)FetchProvider.fetch @ FetchProvider.ts:30DigestCache.fetchDigest @ DigestCache.ts:73HttpClient.fetch @ HttpClient.ts:129HttpClient.post @ HttpClient.ts:167SPOSuiteNavDataSource.loadData @ SPOSuiteNavDataSource.ts:41SuiteNavManager._loadSuiteNavFromServer @ SuiteNavManager.ts:153SuiteNavManager._getSuiteNavModel @ SuiteNavManager.ts:129SuiteNavManager.loadSuiteNav @ SuiteNavManager.ts:106(anonymous function) @ Shell.ts:164Shell._startApplication @ Shell.ts:145Shell.start @ Shell.ts:141(anonymous function) @ SPModuleLoader.ts:178 FetchProvider.ts:30 GET https://softwares-macbook-pro.local:4321/sites/workbench/_api/web/GetClientSideWebParts 404 (Not Found)FetchProvider.fetch @ FetchProvider.ts:30BasicHttpClient.fetchCore @ BasicHttpClient.ts:68HttpClient._fetchWithInstrumentation @ HttpClient.ts:183HttpClient.fetch @ HttpClient.ts:141HttpClient.get @ HttpClient.ts:154(anonymous function) @ ClientSideWebPartManager.ts:335ServiceScope.whenFinished @ ServiceScope.ts:174(anonymous function) @ ClientSideWebPartManager.ts:333ClientSideWebPartManager.fetchWebParts @ ClientSideWebPartManager.ts:327CanvasStore._fetchWebParts @ CanvasStore.ts:509CanvasStore @ CanvasStore.ts:93Canvas @ Canvas.ts:59Page.componentDidMount @ Page.tsx:28target.(anonymous function) @ index.js:153notifyAll @ react.js:869close @ react.js:12870closeAll @ react.js:15699perform @ react.js:15646batchedMountComponentIntoNode @ react.js:10882perform @ react.js:15633batchedUpdates @ react.js:8456batchedUpdates @ react.js:13706_renderNewRootComponent @ react.js:11076ReactMount__renderNewRootComponent @ react.js:12353_renderSubtreeIntoContainer @ react.js:11150render @ react.js:11170React_render @ react.js:12353SpWebpartWorkbench.onRender @ spWebpartWorkbench.tsx:44ClientSideApplication.render @ ClientSideApplication.ts:83(anonymous function) @ Shell.ts:165Shell._startApplication @ Shell.ts:145Shell.start @ Shell.ts:141(anonymous function) @ SPModuleLoader.ts:178 TraceLogger.ts:147 [SuiteNavManager] SuiteNavManager loadData Failed to retrieve SPO SuiteNavData TraceLogger.ts:145 [ClientSideWebPartManager] SyntaxError: Unexpected token C in JSON at position 0TraceLogger._writeToConsole @ TraceLogger.ts:145TraceLogger._log @ TraceLogger.ts:117TraceLogger.logError @ TraceLogger.ts:42(anonymous function) @ ClientSideWebPartManager.ts:355 TraceLogger.ts:147 [ClientSideWebPartManager] Successfully loaded modules for webpart 7fb7d3c1-c91b-4038-8e2b-2c7dc5376161 TraceLogger.ts:147 [BaseClientSideWebPart] Constructed web part: 568966e1-6496-4915-927f-ce874bbe7d27 OnPremSuiteNavDataSource.ts:65 Uncaught (in promise) Error: Failed to retrieve Hybrid SuiteNavData(…)OnPremSuiteNavDataSource._logAndThrowSuiteNavLoadingError @ OnPremSuiteNavDataSource.ts:65(anonymous function) @ OnPremSuiteNavDataSource.ts:45 Beacon.js:372 Beacon: Logged to UserEngagement with properties: {"EngagementName":"SPPages.SPThemeProvider.loadData.Start","Properties":"{\"appver\":\"\"}","Duration":0,"LogType":0,"ClientTime":1478836974552,"Source":"ClientV2Reliability"}
最佳答案
无需为 aurelia-app
指定属性,它会默认加载 app.html
和 app.js
。因此,您要做的是将其更改为:
<div aurelia-app="main">
因此加载 main.js
并实际启动 aurelia。
Here's a link to the documentation关于引导 aurelia。
关于javascript - Aurelia 应用程序 "Hello World"根本不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441785/