在 Angular2 Web 应用程序中使用 ArangoJS 驱动程序

Using ArangoJS Driver in Angular2 Web Application

我正在使用 Angular2 和 Typescript (v1.8.10) 开发一个项目。我们希望将 ArangoDB 数据库中的数据集成到 Web 应用程序中。如果可能的话,我想使用 arangojs 驱动程序。由于 arangojs 模块的类型尚不存在(如果它们确实存在,有人可以指点我吗?)我正在尝试使用 allowJs tsc 编译器选项。一切都很好,但是 systemjs 无法加载 arangojs 模块。我的 ts 文件中的以下行(在任何 class 定义之外):

let arangojs = require("arangojs");

转译为:

var arangojs = require("arangojs");

然而,当我加载我的 Web 应用程序时,这个 require("arangojs") 会生成以下错误:

(index):48 Error: (SystemJS) SyntaxError: Unexpected token <

欢迎就如何在 Angular2 网络应用程序中使用 arangojs 驱动程序提出任何意见或建议。

谢谢

更新

我发现了上面提到的错误。该错误是由于我的 system.config.js 中的错字造成的。修复拼写错误后,由于加载 arangojs 依赖项(如 http、https、querystring 等)时出错,模块无法加载。我推测 require 在幕后使用的模块加载器与 Angular2 使用的 systemjs 不兼容。我能够通过

加载缩小的 arangojs 驱动程序
<script src="arangojs.min.js"></script>

然后使用

declare var arangojs : any 

在我的打字稿文件中。不过,我更愿意在 typescript 环境中原生使用 arangojs。有没有人在 Angular2 typescript 环境中使用过 arangojs 驱动程序(而不是我上面描述的 hack),如果是的话,你是如何让它工作的?

再次感谢。

当您尝试在浏览器中使用驱动程序时,您应该使用缩小包(它正确使用网络逻辑的网络版本而不是 Node.js 版本)。

浏览器包使用 UMD 包装器,因此如果您可以设置 SystemJS 加载缩小包而不是 NPM 模块,则应该可以使用 require 加载它。

否则,如果您可以说服您的模块加载程序加载 util/request.web.js 而不是 util/request.js,您就可以加载 NPM 模块。该捆绑包是使用 Webpack 构建的,它会自动执行此操作。