javascript - Phantomjs“模块 X 不可用!” 尝试渲染 AngularJS 网页时
问题描述
我花了几个小时试图找到一个问题,它给了我任何线索来解决我的问题,但找不到任何相关的东西。
我正在为一个网站做一些 SEO(我不是 SEO 专家,目前正在学习一些课程并阅读很多关于它的文章),我发现的一件事是在谷歌搜索上作为谷歌的“获取和渲染”安慰。
但是,该网站具有大量 AngularJS (1.5.x) 组件,只是呈现了标题,我暗示这意味着 js 没有正确加载并且 Angular 组件无法初始化。
因为,我后来发现(无法确认)Google Search Console 使用 PhantomJS 来呈现页面,所以我决定在我的本地环境中尝试一下。
我们使用 Webpack 将所有 js 文件捆绑在一起,它在本地和生产环境中都可以正常工作,但是 PhantomJS 在尝试渲染捆绑的文件时似乎存在一些问题。
页面尝试引导的每个模块在运行 PhantomJS 时都会引发错误:
[$injector:nomod] 模块 '(moduleName)' 不可用!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
但正如我所说,所有浏览器都正确加载了所有模块,显然模块声明没有错误,所有导入都按顺序进行,一切都应该按预期工作。除非它没有。
如果您认为脚本的摘录可以为此事带来一些启示,我会在需要时包括在内,因为代码有点敏感,有很多(想不出可能有帮助的一点) ,并且由于它几乎在任何地方都能正常工作,因此在我看来这不是问题,但我肯定是错的。
对不起,我讨厌发布没有代码的问题,但我对此有点不知所措。
有没有人遇到过类似的问题?
任何帮助将非常感激。
亲切的问候。
解决方案
推荐阅读
- highcharts - Highcharts wrap 不是一个函数
- python - 当我运行我的代码时,它会打开窗口但不显示图像
- php - php5. 是否可以以某种方式并行运行 2 个功能?
- python - 为什么我的列表不能直接存储对象?(我的列表只是创建和存储一个元组,元组存储对象)
- javascript - vuetify v-menu 组件中的激活器插槽重新定义
- oracle - 全部插入
- apache - 动态附件文件名
- java - Why does Retrofit use Interface instead of a normal java class?
- go - Go 如何在没有内置 Comparable 接口的情况下处理比较?
- php - 如何仅在 woocommerce 的商店页面上显示有货的变体?