无法使MAP在SystemJS的system.config包中工作

时间:2016-01-16 19:32:27

标签: javascript angular 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错误:

  

获取http://localhost:81/app/boot 404(未找到)

但如果我将其更改为以下内容:

    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 /在app / boot等导入语句中引用DesktopModules / RegentDMS / app的绝对路径(表示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(未找到)

解:

将地图声明移动到配置对象,如下所示:

    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));

1 个答案:

答案 0 :(得分:5)

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

  

map选项...允许您将模块别名映射到位置或包:

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