当通过PhantomJS渲染时,角度视图无法从模板加载

时间:2016-12-13 07:46:44

标签: angularjs phantomjs

我有一个利用模板缓存的Angular应用程序(我们的Gulp构建过程的一部分)。应用程序运行正常,缓存的视图加载...除非通过PhantomJS(或Google的Pagespeed或Fetch as Google)进行渲染。

经过多次调查后,我发现路由引发了这个错误:

Error: [$compile:tpload] Failed to load template: /static/app/public/views/about.html (HTTP status: undefined undefined)

我假设未定义的HTTP状态与没有往返的事实有关...但是我无法找到有关为什么会失败的任何信息,特别是为什么只有在使用上述内容时工具。

总结:

  • App在Chrome,IE,Firefox,Opera
  • 上正常运行
  • 缓存的模板.js文件包含必要的路径和html内容
  • 通过PhantomJS,Speedtest渲染器或Google" Fetch as Google"加载时,路径无法解决。工具
  • 我已经查看了Angular文档,说明了为什么会抛出此错误,但它仍然没有意义,模板已经填充(因为文件模板.js已经加载)

修改

我添加了以下调试行:



    var about = $templateCache.get('/static/app/public/views/about.html');
    console.log('about', about);    




...我在控制台日志中看到了正确的输出,即使使用PhantomJS。

1 个答案:

答案 0 :(得分:1)

事实证明我忽略了另一条错误消息:

Error: undefined is not a constructor (evaluating 'newUrl.startsWith(target)')

......由于PhantomJS的ES5而发生。我没有想到这两个问题是相关的,但在为String.prototype.startsWith提供polyfill后,问题就消失了。