2016-10-22 22 views
2

我試圖將AutobahnJS庫添加到我的Aurelia應用程序,該應用程序使用基於新aurelia-cli requirejs的依賴關係管理特徵。將aurelia-cli與包含相對「.js」的npm包一起使用 - 後綴requirejs進口(特別是高速公路)

npm install autobahn 

然後編輯aurelia.json以提供關於NPM模塊的結構的更多信息(在vendor-bundle.js一段):

使用NPM安裝高速公路後

{ 
    "name": "autobahn", 
    "path": "../node_modules/autobahn/lib", 
    "main": "autobahn" 
} 

該應用程序將不能啓動(au run --watch),由於此(縮寫)錯誤:

// snip... 
errno: -2, 
code: 'ENOENT', 
syscall: 'open', 
path: '/Users/hozn/workspace/my-ui/autobahn/polyfill.js', 
moduleTree: [ 'autobahn/autobahn' ], 
fileName: '/Users/hozn/workspace/my-ui/node_modules/autobahn/lib/autobahn.js' 

綜觀node_modules/autobahn/lib/autobahn.js源有多個require('./<module>.js'線,如:

var util = require('./polyfill.js'); 

顯然,aurelia-cli捆綁/流道是假設那些將是相對於我的應用程序的根目錄,而不是高速公路模塊的安裝目錄。刪除「.js」擴展似乎在這裏修復了一些問題,但我不確定這是解決根本問題還是觸發不同的查找機制?我一直無法找到任何其他特殊設置來傳遞依賴聲明以允許此包工作。

到目前爲止,我得到的唯一工作是下載built versions of autobahn.js之一,然後將其放入aurelia.json文件的prepend部分。儘管如此,這還是有些破綻,而且我很樂意學習如何使用aurelia-cli更正確地做到這一點。

回答

0

如果你只在你的庫,那麼你可以手動添加依賴於aurelia.json一樣,JavaScript和CSS文件(必須安裝並添加到aurelia.json所有DEPS庫太):

{ 
    "name": "autobahn", 
    "path": "../node_modules/autobahn/lib", 
    "main": "autobahn", 
    "deps": ["module1", "module2", "module2"], 
    "resources": ["file1.css", "file2.css"] 
} 

如果你有太複雜的庫或像字體一樣的擴展文件 - 您必須手動添加庫以進行捆綁。你可以在這裏找到工作示例:How can I add Font Awesome to my Aurelia project using npm?

+0

感謝您的回覆!不知道我是否理解這與我已經添加到'aurelia.json'的方式有什麼不同 - 例如,這是否爲我提供了一種列舉所有JavaScript文件的方式,以便正確解析從'autobahn.js'的相對導入? –

+0

如果你使用aurelia.json,那麼你不需要枚舉所有的js文件。奧裏利亞掃描儀將分析您的主要js文件並將資源包括到所有lib的依賴項中(另一個js文件)。但是,如果你的lib使用jquery等第三方庫,那麼你需要在deps節中枚舉它 - 模塊加載器(require.js)將確保它在你的lib之前將被加載。 – JayDi

+0

所以,我正在使用'aurelia.json',正如我上面所描述的(在我的問題中)。問題在於,由於相對導入,此npm安裝模塊未成功構建到'vendor-bundle.js'中。 –

相關問題