2016-08-01 91 views
0

我有兩個使用webpack作爲模塊打包器和打字稿的Angular2項目。瞭解Angular 2 webpack項目中的源代碼符號鏈接

爲了共享代碼,我拆分了一些源代碼,併爲這兩個項目中的每一個的這個「外部」源代碼創建了一個符號鏈接。

完成此操作後,「符號鏈接代碼」無法正確解析導入

低於「hello world」項目以顯示我的顧慮。

https://github.com/datracka/angular2-symlink-issue

該項目運行直線前進,但如果你刪除給​​定src文件夾,並創建一個符號鏈接到具有相同的源代碼中的另一個src文件夾,但位於/another/path/src,那麼你得到一個編譯錯誤:

ERROR in .-shared/src/main.ts 
Module build failed: TypeError: Path must be a string. Received undefined 
    at assertPath (path.js:7:11) 
    at Object.dirname (path.js:1326:5) 
    at ensureTypeScriptInstance (/Users/vicensfayos/Projects/angular2-whatafuck/node_modules/ts-loader/index.js:156:103) 
    at Object.loader (/Users/vicensfayos/Projects/angular2-whatafuck/node_modules/ts-loader/index.js:403:14) 

所以我的問題是:當我將源代碼「分發」到項目文件夾本身的另一個文件夾中時,我缺少符號鏈接?

我的猜測是關於在webpack​​中配置正確解析對象以覆蓋node.js加載node_modules算法https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders但不是運氣。

希望有人能指出我的方向。

回答

1

我找到了答案。

我的猜測是對的。它關於nodejs如何解決依賴關係。 https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders

符號鏈接代碼試圖找到依賴性,一直向上移動,直到找到node_module。但沒有什麼。 node_module位於父項目中。

因此,解決方案是從符號鏈接代碼創建另一個符號鏈接到父項目的node_modules文件夾以解決依賴關係。