我一直在关注各种来源,尤其是Mathew James Davis和THIS博客条目以及其他人。
我有我的boot.ts(主要在其他例子中等):
aurelia
.start()
.then(function () { return aurelia.setRoot(PLATFORM.moduleName("public/public/public")); });
});
有效。
我现在正在运行两个根并检查localstorage中是否存在JWT。它得到了jwt并存储它没关系,我甚至正确地获得它但它现在无法识别根,我认为我有某种语法错误..
这就是我现在所拥有的:
aurelia.start().then(() => {
var auth = aurelia.container.get(AuthService);
let root = auth.isAuthenticated() ? 'app/app/app' : 'public/public/public';
return aurelia.setRoot(PLATFORM.moduleName(root));
});
我收到以下错误:
Uncaught (in promise) Error: Unable to find module with ID: public/public/public
我不知道为什么当直接输入完全相同的路径时它现在不起作用..
更新
好的,所以我想我会重构这个并利用有效的代码部分:
这就是我改为:
var auth = aurelia.container.get(AuthService);
let authenticated = auth.isAuthenticated();
console.log("authenticated: ", authenticated);
if (authenticated) {
aurelia
.start()
.then(function () { return aurelia.setRoot(PLATFORM.moduleName("app/app/app")); });
} else {
aurelia
.start()
.then(function () { return aurelia.setRoot(PLATFORM.moduleName("public/public/public")); });
}
现在它显示一个空白的加载页面,其中包含" loading"并在控制台中显示:
authenticated: false
aurelia-logging-console.js:27 INFO [aurelia] Aurelia Started
client.js:82 [HMR] connected
注意 - 如果只有原始代码包含app / app / app且authentication = true,那么它也会正确显示。
因此两个根都有效,但没有检查..
答案 0 :(得分:0)
最后解决了这个问题。我最终改变了原来的代码:
aurelia.start().then(function () {
var auth = aurelia.container.get(AuthService);
var root = auth.isAuthenticated() ? "app/app/app" : "public/public/public";
aurelia.setRoot(root);
为:
aurelia.start().then(() => {
var auth = aurelia.container.get(AuthService);
let root: string = auth.isAuthenticated() ? PLATFORM.moduleName('app/app/app') : PLATFORM.moduleName('public/public/public');
aurelia.setRoot(root, document.body)
});
它现在有效。最后,我缺乏编程技巧,但是如果有其他人有问题,他们可能会尝试这样做来切换路线。