jspm 找不到 Aurelia 应用的 'feature' 插件的全局资源
jspm cannot find globalResources of a 'feature' plugin for Aurelia app
Aurelia 文档在 http://aurelia.io/docs.html#features
描述了如何设置和使用功能插件
我遇到了一些麻烦,因为 jspm 或 Aurelia 似乎正在转换资源路径。我发现,如果我用 .aurelia.use.feature('./plugins/auth');
指定当前路径,那么在启动时无法找到 calvert-auth/index.js
。请求看起来正确,但浏览器抛出 404 错误。我只是通过从 .aurelia.use.feature('plugins/auth');
中删除“./”来解决这个问题
接下来,我在 index.s 的 configure() 中添加了对 frameworkConfig.globalResources('auth') 的调用。这会导致新的 404 错误,因为请求是针对 calvert-auth/auth.html 而不是预期的 calvert-auth/auth.js
我怀疑问题可能在 jspm 配置或 corejs 中,但尚未能够隔离它。
如何为 Aurelia 创建和使用内部功能插件?这是 类:
config.js
...
paths: {
"*": "dist/*",
"github:*": "jspm_packages/github/*",
"npm:*": "jspm_packages/npm/*"
},
...
main.js
import 'bootstrap';
import authConfig from './auth-config';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('plugins/calvert-auth', (baseConfig) => {
baseConfig.configure(authConfig);
});
aurelia.start().then(a => a.setRoot());
}
插件/calvert-auth/auth.js
export class Auth {
constructor() {
console.log('Auth: constructor()');
}
}
plugins/calvert-auth/index.js
import {BaseConfig} from './baseConfig';
export function configure(frameworkConfig, configCallback) {
frameworkConfig.globalResources('./auth');
let baseConfig = frameworkConfig.container.get(BaseConfig);
if (configCallback !== undefined && typeof(configCallback) === 'function') {
configCallback(baseConfig);
}
}
试试这个:
假设上面的代码和这个结构:
main.js
plugins/calvert-auth/index.js
plugins/calvert-auth/auth.js
在main.js中:
import 'bootstrap';
import authConfig from './auth-config';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('plugins/calvert-auth', (baseConfig) => {
baseConfig.configure(authConfig);
});
aurelia.start().then(a => a.setRoot());
}
在plugins/calvert-auth/index.js:
export function configure(frameworkConfig, configCallback) {
// this assumes you're importing a view model
frameworkConfig.globalResources('auth');
}
在plugins/calvert-auth/auth.js:
import {noView} from 'aurelia-framework';
@noView
export class Auth {
constructor() {
console.log('Auth: constructor()');
}
}
Aurelia 文档在 http://aurelia.io/docs.html#features
描述了如何设置和使用功能插件我遇到了一些麻烦,因为 jspm 或 Aurelia 似乎正在转换资源路径。我发现,如果我用 .aurelia.use.feature('./plugins/auth');
指定当前路径,那么在启动时无法找到 calvert-auth/index.js
。请求看起来正确,但浏览器抛出 404 错误。我只是通过从 .aurelia.use.feature('plugins/auth');
接下来,我在 index.s 的 configure() 中添加了对 frameworkConfig.globalResources('auth') 的调用。这会导致新的 404 错误,因为请求是针对 calvert-auth/auth.html 而不是预期的 calvert-auth/auth.js
我怀疑问题可能在 jspm 配置或 corejs 中,但尚未能够隔离它。
如何为 Aurelia 创建和使用内部功能插件?这是 类:
config.js
...
paths: {
"*": "dist/*",
"github:*": "jspm_packages/github/*",
"npm:*": "jspm_packages/npm/*"
},
...
main.js
import 'bootstrap';
import authConfig from './auth-config';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('plugins/calvert-auth', (baseConfig) => {
baseConfig.configure(authConfig);
});
aurelia.start().then(a => a.setRoot());
}
插件/calvert-auth/auth.js
export class Auth {
constructor() {
console.log('Auth: constructor()');
}
}
plugins/calvert-auth/index.js
import {BaseConfig} from './baseConfig';
export function configure(frameworkConfig, configCallback) {
frameworkConfig.globalResources('./auth');
let baseConfig = frameworkConfig.container.get(BaseConfig);
if (configCallback !== undefined && typeof(configCallback) === 'function') {
configCallback(baseConfig);
}
}
试试这个:
假设上面的代码和这个结构:
main.js
plugins/calvert-auth/index.js
plugins/calvert-auth/auth.js
在main.js中:
import 'bootstrap';
import authConfig from './auth-config';
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.feature('plugins/calvert-auth', (baseConfig) => {
baseConfig.configure(authConfig);
});
aurelia.start().then(a => a.setRoot());
}
在plugins/calvert-auth/index.js:
export function configure(frameworkConfig, configCallback) {
// this assumes you're importing a view model
frameworkConfig.globalResources('auth');
}
在plugins/calvert-auth/auth.js:
import {noView} from 'aurelia-framework';
@noView
export class Auth {
constructor() {
console.log('Auth: constructor()');
}
}