Aurelia запускает setRoot выдает ошибку Приложение не было указано - PullRequest
0 голосов
/ 09 января 2019

Используя следующий код:

import { Aurelia } from "aurelia-framework";

export async function configure(aurelia) {
  aurelia.use.standardConfiguration().developmentLogging();

  await aurelia
    .start()
    .then(a => a.setRoot())
    //.then(a => a.setRoot("app.js", document.body))
    .catch(ex => {
      document.body.textContent = `Bootstrap error: ${ex}`;
    });
}

Я получаю эту ошибку:

Ошибка начальной загрузки: Ошибка: не указан applicationHost.

Если я переключусь на использование .then(a => a.setRoot("app.js", document.body)) вместо .then(a => a.setRoot()), все будет работать.

В собственном кратком руководстве Aurelias используется следующий код:

import {Aurelia} from 'aurelia-framework';

export function configure(aurelia: Aurelia) {
    aurelia.use.basicConfiguration();
    aurelia.start().then(() => aurelia.setRoot());
}

Если я переключаюсь на use.basicConfiguration в своем коде, я все равно получаю ту же ошибку.

https://aurelia.io/docs/tutorials/creating-a-todo-app#getting-ready-to-render

Код для воспроизведения:

https://codesandbox.io/s/0x4wvlly90

1 Ответ

0 голосов
/ 17 января 2019

При автоматической начальной загрузке aurelia-bootstrapper обнаруживает элементы с атрибутом aurelia-app и, основываясь на указанном значении, загружает основную запись в программу начальной загрузки с информацией о том, какие элементы содержат эти атрибуты aurelia-app. Вот почему вы можете сделать setRoot() без каких-либо аргументов. Первый аргумент app.js, а второй аргумент автоматически предоставляется вышеуказанным обнаружением.

Когда вы выполняете ручную загрузку, как в блоке кода вопроса, информация о root отсутствует, поэтому вы видите ошибку. Так что это правильный и стандартный способ сделать это, если вы передаете второй параметр.

...