【问题标题】:Angular-cli, karma Uncaught ReferenceError on global variables全局变量上的 Angular-cli,业力未捕获的 ReferenceError
【发布时间】:2017-05-05 19:38:58
【问题描述】:

我有一个使用 angular-cli 1.0 生成的 angular 4.0 项目。

我有全局变量,例如 api 端点,它们在 octopus deploy 的部署过程中根据环境进行交换。

global-tokens.js

var apis = {
    foo: 'http://foobar.foo'
}

这在本地以及在上层环境中的行为与预期的一样。但在运行单元测试时不会。

我尝试在 tsconfig.spec.json 以及 "assets""scripts"in .angular.cli.json 的 "files" 节点中包含全局令牌 js

当我运行 ng test 时,我得到了

Uncaught ReferenceError: apis is not defined

经过进一步检查,我调试测试时 index.html 中不包含 global-tokens.js。

关于如何将该文件放入我的环境中的任何想法?

编辑:添加脚本尝试

【问题讨论】:

  • 首先,为什么不在 Angular cli 中使用内置的 it 环境选项?如果不需要,那些是 e2e 测试还是 ui 测试?你试过通过.angular-cli.josnscript添加这个文件吗(就像你想要一个外部库一样)?
  • 根据您的 cmets 编辑。就标记化哪个文件而言,我几乎无法控制章鱼进程。
  • 您总是可以在抛出 Uncaught ReferenceError: apis is not defined 的测试用例中执行 require("path/to/global-tokens.js")。这将在您的测试中内联 global-tokens.js,并且 var 变为可用。
  • 在规范中添加 require 似乎并不能解决被测文件中引用的问题。我继续收到同样的错误。

标签: angular typescript global-variables karma-jasmine angular-cli


【解决方案1】:

karma.conf.js 文件中,将 global-tokens.js带有适当的路径)添加到 files强>数组

karma.config.js

config.set({
   ..
   files: ['global-tokens.js']
   ..
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-16
    • 2017-07-09
    • 1970-01-01
    • 2017-02-08
    • 2020-02-29
    • 2017-12-23
    • 2018-10-25
    • 2021-02-08
    相关资源
    最近更新 更多