无法让 MAP 在 system.config 个 SystemJS 包中工作

can not get MAP to work within system.config packages for SystemJS

您好,我为 systemJS 设置了以下配置:

    System.config({
    packages: {
        //sets the root path of the Angular2 App
        'DesktopModules/RegentDMS/app': {
            //module format expected in application, register = System.register or System.registerDynamic compatibility module format
            format: 'register',
            //default file extension for paths
            defaultExtension: 'js',
            map: {'./app' : './DesktopModules/RegentDMS/app'}
        },
    } 
  }); 
System.import('app/boot')
        .then(null, console.error.bind(console));

默认扩展工作正常,但我在控制台中收到 404 错误:

GET http://localhost:81/app/boot 404 (Not Found)

但是如果我把它改成下面这样:

    System.config({
    packages: {
        //sets the root path of the Angular2 App
        'DesktopModules/RegentDMS/app': {
            //module format expected in application, register = System.register or System.registerDynamic compatibility module format
            format: 'register',
            //default file extension for paths
            defaultExtension: 'js'
        },
    } 
  }); 
System.import('/DesktopModules/RegentDMS/app/boot.js')
        .then(null, console.error.bind(console));

那么它确实起作用了。

问题:

如何设置 MAP 设置,以便我可以使用简写 app/ 在导入语句中引用 DesktopModules/RegentDMS/app 的绝对路径,如 app/boot(意思是 DesktopModules/RegentDMS/app/boot.js)

谢谢

编辑#1:

所以我按照建议将 ./app 更改为 app 并尝试了以下两种方法:

 map: { 'app': './DesktopModules/RegentDMS/app' }
 map: { app: './DesktopModules/RegentDMS/app' }

这在使用以下任何导入语句时不起作用:

System.import('app/boot')
 System.import('./app/boot')

两者都出现以下错误:

http://localhost:81/app/boot 404 (Not Found)

解决方案:

像这样将地图声明移动到配置对象:

    System.config({
    packages: {
        //sets the root path of the Angular2 App
        'DesktopModules/RegentDMS/app': {
            //module format expected in application, register = System.register or System.registerDynamic compatibility module format
            format: 'register',
            //default file extension for paths
            defaultExtension: 'js'
        }
    },
    map: { 'app': './DesktopModules/RegentDMS/app' }
  }); 
System.import('app/boot')
        .then(null, console.error.bind(console));

正如@Langley 在评论中建议的那样,您应该使用 app,而不是 ./app(名称而非路径),并将 map 定义从 packages 对象移动到config 对象。

The map option ... allows you to map a module alias to a location or package:

https://github.com/systemjs/systemjs/blob/master/docs/config-api.md#map