【问题标题】:Using ArangoJS Driver in Angular2 Web Application在 Angular2 Web 应用程序中使用 ArangoJS 驱动程序
【发布时间】:2016-07-20 23:58:14
【问题描述】:

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

let arangojs = require("arangojs");

转译为:

var arangojs = require("arangojs");

但是,当我加载我的网络应用程序时,这 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),如果有,你是如何让它工作的?

再次感谢。

【问题讨论】:

    标签: typescript angular systemjs arangodb arangojs


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我能够使缩小的驱动程序如上所述工作。但是,缩小的驱动程序没有与 Angular2 环境干净地集成,Typescript 试图提供的所有类型安全都丢失了,IDE 可以提供的“优点”,例如类型检查语法错误突出显示等......使用从驱动程序获得的对象。在缩小的驱动程序上使用“require()”对我不起作用,因为 systemjs 加载器没有加载所有依赖项,而我没有将它们全部添加到我不想做的 systemjs.config.js 中。跨度>
    • @muddlednbefuddled:目前 NPM 版本无法在浏览器环境中运行。如果您想在 ArangoJS 存储库中为此打开一个问题,也许我们可以通过某种方式使其更加灵活。
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多