在SystemJS加载器环境中将相对路径映射到绝对路径的方法

Dyn*_*lon 6 javascript commonjs node.js systemjs

我正在使用SystemJS加载器(使用commonJS模块,但这不重要),主要是直接访问下的组件node_modules.

现在在运行时,是否可以从相对的环境中查找当前环境中的绝对路径?

即如果我这样做require('./myComponent')将获取,http://localhost:3000/app/myComponent.js但万一通过npm install(因此驻留node_modules)安装此组件,SystemJS将正确加载http://localhost:3000/node_modules/dist/myComponent.js.有没有办法从相对的路径中查找这个绝对路径?

就是这样的var absPath = SystemJS.lookup('./myComponent')

art*_*tem 3

它被称为normalize,它返回一个解析为绝对 URL 的 Promise,如当前 SystemJS 配置所定义:

SystemJS.normalize('./myComponent').then(function(url) {

});
Run Code Online (Sandbox Code Playgroud)

返回承诺意味着不能保证它不会执行任何网络加载 - 例如,如果涉及插件或自定义加载器,则可能需要首先加载插件。

此外,它还需要可选的第二个参数 - 父模块的名称,因为可以在配置中定义特定于包的映射。