我试图将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'中。 –