在Oracle JET应用中使用Govuk-Frontend npm包调用initAll()报错求助
在Oracle JET中正确调用Govuk-Frontend的initAll()函数
核对RequireJS配置
- 检查path_mapping.json里的映射路径是否准确,示例配置如下:
{ "govuk-frontend": { "debug": "node_modules/govuk-frontend/govuk/govuk", "release": "node_modules/govuk-frontend/govuk/govuk" } } - 在main.js的requirejs.config里,要保证paths中包含正确的映射,或者通过path_mapping引入:
requirejs.config({ paths: { // 其他配置项... 'govuk-frontend': 'node_modules/govuk-frontend/govuk/govuk' } });
- 检查path_mapping.json里的映射路径是否准确,示例配置如下:
用正确方式引入并调用initAll()
- 在dashboard.js里,必须用RequireJS的异步加载方式引入govuk-frontend,别直接依赖全局变量调用:
require(['govuk-frontend'], function(GOVUK) { // 先确认GOVUK对象和initAll方法存在再执行调用 if (GOVUK && GOVUK.initAll) { GOVUK.initAll(); } }); - 说明:你重命名的govuk.js(原all.js)导出的是
GOVUK对象,得通过RequireJS的回调参数获取这个对象后再调用initAll()。Oracle JET基于RequireJS模块化加载,直接访问全局GOVUK变量时,很可能该对象还未完成初始化,这就是你遇到undefined错误的核心原因。
- 在dashboard.js里,必须用RequireJS的异步加载方式引入govuk-frontend,别直接依赖全局变量调用:
最后验证文件状态
- 确认重命名后的govuk.js确实在
node_modules/govuk-frontend/govuk/目录下,且文件未损坏、能正常被加载。
- 确认重命名后的govuk.js确实在
内容的提问来源于stack exchange,提问作者Aishwarya B
相关产品推荐
相关产品推荐

