如何告诉systemjs忽略导入

这是为了systemjs库,而不是systemjs-builder

我可能在这里有一个边缘案例。 但我试图设置我的前端Web应用程序运行在命令行中的unit testing。 我的安装程序目前将打字稿制作成systemjs寄存器格式,并按照其规格将加载文件导入到网站中。 我目前面临的问题是,我的依赖项之一reflect-metadata有一个节点自动检测系统,使得一个require('crypto')调用,这是一个本地节点模块(npm中不可用)。 我收到的错误是:

错误:ENOENT:没有这样的文件或目录,打开'/Users/path/to/project/node_modules/crypto.js'

在这里我可以理解很多事情,但是我之后的行为是让systemjs完全忽略require('crypto')调用,并允许它完全不变地通过,因为节点将在运行时正确加载它。

由于我们正在创build的多模块企业应用程序,由于接收Systemjs版本的子依赖关系,而不是一个临时的commonjs版本,所以我没有真正的将打字稿导出到commonjs的自由。 (要做到这一点的唯一方法是将commonjs版本包含在我们的私人npm dist build中,这远非理想)

这里是我用于系统的当前configuration,因为我一直在试图让系统忽略encryption库的要求。 我把它留在了上面的错误产生的确切的状态,评论和所有,所以你可以看到我已经尝试过。

 System.config({ defaultJSExtensions: true, map: { 'angular2': 'node_modules/angular2', 'reflect-metadata': 'node_modules/reflect-metadata/Reflect', 'crypto': 'node_modules/crypto' } // packages: { // 'reflect-metadata': { // format: 'global', // exports: 'Reflect', // defaultExtension: false, // meta: { // '*': { // defaultExtension: false // } // } // } // } // meta:{ // 'reflect-metadata/Reflect':{ // format: 'global', // exports: 'Reflect', // defaultExtension: false // } // } }); 

要忽略一个需求,你可以把它映射到你的SystemJSconfiguration文件中的@empty模块。 你可以通过添加System.config({ map: { 'crypto': '@empty' } })