在包含相对".js"后缀的npm包中使用aurelia-cli需要导入(特别是autobahn)

Using aurelia-cli with npm packages containing relative ".js"-suffixed requirejs imports (specifically autobahn)

本文关键字:quot 导入 特别是 aurelia-cli autobahn npm js 相对 包含 后缀 包中使      更新时间:2023-09-26

我试图将AutobahnJS库添加到我的Aurelia应用程序中,该应用程序使用新的Aurelia -cli基于需求的依赖管理功能。

使用npm安装autobahn后:

npm install autobahn

然后编辑aurelia.json以提供有关NPM模块结构的更多信息(在vendor-bundle.js部分):

{
  "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"扩展似乎解决了这里的事情,虽然我不确定这是否解决了根本问题,还是只是触发了不同的查找机制?我找不到任何其他特殊的设置来传递依赖声明来允许这个包工作。

到目前为止,我唯一要做的就是下载autobahn.js的一个构建版本,然后把它放在aurelia.json文件的prepend部分。不过,这有点麻烦,我很想学习如何使用aurelia-cli更正确地做到这一点。

如果你的库中只有javascript和css文件,那么你可以像这样手动添加依赖到aurelia.json(你必须安装并添加到aurelia.json的所有deps库):

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

如果你有太复杂的库或扩展文件,如字体——你必须手动添加你的库到bundle。你可以在这里找到工作示例:我如何使用npm将字体Awesome添加到我的Aurelia项目中?