这适用于systemjs库,而不是systemjs-builder
我可能在这里有一些优势.但我正在尝试设置我的前端Web应用程序,以在命令行中运行它的单元测试.我的设置当前构建了systemjs寄存器格式的typescript,并根据其规范将负载导入到站点中.我目前面临的问题是我的一个依赖项reflect-metadata有一个节点自动检测系统进行require('crypto')调用,这是一个本机节点模块(在npm中不可用).我收到的错误是:
错误:ENOENT:没有这样的文件或目录,打开"/Users/path/to/project/node_modules/crypto.js"
我理解这里有很多东西在玩,但我所遵循的行为是让systemjs完全忽略require('crypto')调用并允许它完全不变,因为节点会在运行时正确加载它.
由于我们正在创建的多模块企业应用程序,由于接收Systemjs版本的子依赖项而不是临时commonjs构建,我实际上无法自由地将打字稿导出到commonjs.(唯一的方法是在我们的私有npm dist构建中包含commonjs版本,这远非理想)
这是我用于系统的当前配置,因为我一直试图让系统忽略加密库所需.我已经把它保持在上面生成错误的确切状态,评论等所有你可以看到我尝试过的东西.
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
// }
// }
});
Run Code Online (Sandbox Code Playgroud)
要忽略require,您可以将其映射到@emptySystemJS配置文件中的模块.你可以通过添加来做到这一点System.config({ map: { 'crypto': '@empty' } })
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |