2016-10-22 20 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'中。 –

相关问题