我試圖將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
更正確地做到這一點。
感謝您的回覆!不知道我是否理解這與我已經添加到'aurelia.json'的方式有什麼不同 - 例如,這是否爲我提供了一種列舉所有JavaScript文件的方式,以便正確解析從'autobahn.js'的相對導入? –
如果你使用aurelia.json,那麼你不需要枚舉所有的js文件。奧裏利亞掃描儀將分析您的主要js文件並將資源包括到所有lib的依賴項中(另一個js文件)。但是,如果你的lib使用jquery等第三方庫,那麼你需要在deps節中枚舉它 - 模塊加載器(require.js)將確保它在你的lib之前將被加載。 – JayDi
所以,我正在使用'aurelia.json',正如我上面所描述的(在我的問題中)。問題在於,由於相對導入,此npm安裝模塊未成功構建到'vendor-bundle.js'中。 –