我正在使用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')
?
答案 0 :(得分:4)
它被称为normalize
,它返回一个解析为绝对URL的promise,
由当前的SystemJS配置定义:
SystemJS.normalize('./myComponent').then(function(url) {
});
返回承诺意味着无法保证它不会执行任何网络加载 - 例如,如果涉及插件或自定义加载器,则可能需要先加载插件。
此外,它采用可选的第二个参数 - 父模块的名称,因为可以在配置中定义特定于包的映射。