Angular无法为prerender.js / phantom.js加载模块仅用于pproduction

时间:2017-03-23 08:17:40

标签: angularjs phantomjs yeoman-generator-angular prerender

网站在生产中没有任何问题(文件缩小和连接),但是当页面发送到prerender.js或phantom.js以生成快照时,我收到错误:

  

未捕获错误:[$ injector:modulerr]无法实例化模块   myApp to:错误:[$ injector:modulerr]无法实例化模块   myApp由于:错误:[$ injector:nomod]模块'myApp'不是   可以!您要么错误拼写了模块名称,要么忘记加载它。   如果注册模块,请确保将依赖项指定为   第二个论点。

     

https://www.mydomain.io/app/vendor.7240ef6a.js:4
  d https://www.mydomain.io/app/vendor.7240ef6a.js:3   m https://www.mydomain.io/app/vendor.7240ef6a.js:4   db https://www.mydomain.io/app/vendor.7240ef6a.js:4   g https://www.mydomain.io/app/vendor.7240ef6a.js:3   https://www.mydomain.io/app/vendor.7240ef6a.js:3 in ea
  {蓝色中的https://www.mydomain.io/app/vendor.7240ef6a.js:3   https://www.mydomain.io/app/vendor.7240ef6a.js:8
  j https://www.mydomain.io/app/vendor.7240ef6a.js:2   https://www.mydomain.io/app/vendor.7240ef6a.js:2 in fireWith
  https://www.mydomain.io/app/vendor.7240ef6a.js:2准备好了   https://www.mydomain.io/app/vendor.7240ef6a.js:1 in g

我需要文件:vendor.js和app.js.我在另一个项目上有完全相同的结构(只是文件不同),并且它与同一个prerender.js服务器配合得很好。

我设法将问题跟踪到jquery.js。但是我在这一点上陷入困​​境。看起来像prerender / phanatom.js以不同的方式加载文件。 A也使用window.prerenderReady = true/false无效。

我正在使用generator-angular-fullstack和Angular v1.5.8以及jQuery v2.2.4

在index.html中,jquery包含在angular之前。我想知道是否有任何方法可以获得有关导致问题的原因的更详细信息。

1 个答案:

答案 0 :(得分:0)

如果你的文件被加载到<body>,我之前就已经看到了这种情况。在<body>中加载脚本会使脚本异步加载,脚本可能以错误的顺序加载。大多数较新的浏览器处理得很好,但PhantomJS(v2.1.1)会在加载后立即执行脚本,无论顺序如何。

我建议您尝试在<head>

中加载这些脚本