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

时间:2016-07-27 08:04:32

标签: javascript node.js systemjs commonjs

我正在使用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')

1 个答案:

答案 0 :(得分:4)

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

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

});

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

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