【问题标题】:SystemJS: how to add file extensions for interal dependencies?SystemJS:如何为内部依赖项添加文件扩展名?
【发布时间】:2017-10-23 18:30:57
【问题描述】:

有 Angular 2 应用程序,使用 typescript 进行编码,使用 SystemJS 进行模块加载。

//sydtemjs.config.js
(function (global) {
    System.config({
        map: {
        'normalizr': 'node_modules/normalizr/dist/src/index.js' //mapping normalizr library
        },
         packages: {
             normalizr: {
                defaultExtension: 'js'
            }
         }

index.js 加载成功,但包含依赖:

//node_modules/normalizr/dist/src/index.js
var _Entity = require('./schemas/Entity');
var _Array = require('./schemas/Array');
//etc

浏览器向 base_path/node_modules/normalizr/dist/src/schemas/Array 发出请求(无 js 扩展名),服务器返回 404。

如何配置 systemjs 为内部模块附加 js 扩展?为什么defaultExtension不能解决?

【问题讨论】:

    标签: angular systemjs


    【解决方案1】:

    我会避免使用 defaultJSExtensions 的解决方案,因为此属性已在较新版本的 systemjs 中被弃用。

    您还需要映射规范器的所有依赖项才能使其工作,否则,systemjs 将不知道如何加载。

    在这种情况下,您最好使用 jspm 自动创建配置。

    【讨论】:

    • 值得一提的是,当前最新的jspm主版本(0.16.53)将生成使用defaultJSExtensions的config.js:)
    【解决方案2】:

    您是否尝试过删除packages 部分并改为全局使用defaultJSExtensions

    类似这样的:

    {
      defaultJSExtensions: true,
      map: {
        'normalizr': 'node_modules/normalizr/dist/src/index
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-29
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多