2016-07-27 91 views
6

我正在使用SystemJS加載程序(使用commonJS模塊,但這應該不重要),主要是直接訪問node_modules下的組件。在SystemJS加載器環境中將相對路徑映射到絕對路徑的方法

現在在運行時,是否有可能從相對位置查找當前環境中的絕對路徑?

I.e.如果我這樣做require('./myComponent')它將獲取http://localhost:3000/app/myComponent.js,但如果通過npm install安裝此組件(因此位於node_modules之下),SystemJS將正確加載http://localhost:3000/node_modules/dist/myComponent.js。有沒有辦法從相對的路徑中查找這條絕對路徑?

I.e.像var absPath = SystemJS.lookup('./myComponent')

回答

4

這就是所謂的normalize,並返回解析爲絕對URL承諾, 由當前SystemJS配置定義:

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

}); 

返回一個承諾意味着沒有保證,它不會執行任何網絡加載 - 例如,如果涉及插件或自定義加載器,則可能需要首先加載插件。

此外,它需要可選的第二個參數 - 父模塊的名稱,因爲可以在配置中定義特定於軟件包的映射。