2

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

let arangojs = require("arangojs");

转译为:

var arangojs = require("arangojs");

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

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

欢迎任何有关如何在 Angular2 Web 应用程序中使用 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),如果是这样,你是如何让它工作的?

再次感谢。

4

1 回答 1

1

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

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

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

于 2016-07-20T15:58:14.477 回答