【问题标题】:Can't find variable: Promise in Phantomjs找不到变量:Phantomjs 中的 Promise
【发布时间】:2018-04-11 05:20:06
【问题描述】:

我正在用 Jasmin 编写测试用例。

当我调用波纹管方法时,

initialize({"Data": "primary"});

这是:

initialize: function(config) {

    console.info("initialize Version 2 initialized..");

    return new Promise(function(resolve, reject) {

    console.info("promise");

    resolve(true);
    });
}

我遇到错误

ReferenceError: Can't find variable: Promise in http://localhost:8080/absolute/home/krushanu/project/krushanu/ekstep/theLib/js-libs/telemetry/telemetry.js?a043c6a23b1af06737d8e1ae1e1c2e152d4faa83

安装的phantom js版本为2.1.1

【问题讨论】:

标签: javascript unit-testing phantomjs tdd karma-jasmine


【解决方案1】:

PhantomJS 本身不支持 Promise。 See the issue in github here。你可以使用 es6-promise 或 promise-polyfill 来启用 Promise 支持。如果可能的话,我建议迁移到Puppeteer

【讨论】:

  • 谢谢。没听说过傀儡师。这解决了这个问题,而不必弄乱 PhantomJS 的 promise polyfill。这是一个更好的选择,因为无论如何我在调试时都在使用 ChromeCanary。
  • @ajaybc 有关如何将 es6-promise 与 phantomjs 一起使用的任何步骤?我正在使用 Phantomjs 从 HTML 文件生成 PDF。
  • @someITdood 我绝对会推荐你切换到 Puppeteer 而不是 PhantonJS。由于它在幕后运行新版本的 Chrome,它肯定会支持您正在寻找的任何支持。
  • @ajaybc 但是带有 nodejs 或最新 chrome 独立版的 Puppeteer 需要超过 200 兆字节的空间。
  • 我通过添加这个js文件解决了这个问题
猜你喜欢
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多