javascript - Aurelia 应用程序 "Hello World"根本不工作

标签 javascript node.js sharepoint typescript aurelia

我正在创建一个 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"}

enter image description here

最佳答案

无需为 aurelia-app 指定属性,它会默认加载 app.htmlapp.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/

相关文章:

javascript - 从 ajax 错误函数内部访问发布数据

css - bootstrap 和 jQuery 在 Sharepoint 2013 中无法正常工作

c# - Sharepoint Web 服务 GetListItems 不返回所有行

linux - 使用 davfs2 挂载 Sharepoint 共享会产生空文件夹

javascript - 按钮工具提示上的数据标题未更新

javascript - 有人可以解释以下示例中 ...spread 运算符的使用吗?

javascript - 如何在脚本中/从 CLI 中分析 javascript 处理后的网页标记?

javascript - 云函数超时后继续执行

angularjs - 上传到服务器之前是否可以重命名文件?

node.js 无需刷新即可获取新数据