使用Hugo框架js.Build功能时遇Uncaught ReferenceError: require is not defined错误求解决
解决Hugo js.Build中"Uncaught ReferenceError: require is not defined"的问题
调整js.Build输出为ES模块
在Hugo配置文件(hugo.toml/hugo.yaml/hugo.json)中修改js.Build配置,指定输出格式为ES模块:
以toml格式为例:[build] [build.js] format = "esm"编译后的JS会自动用
import/export替代require,适配浏览器环境。替换代码中的CommonJS语法
自己的JS代码里如果直接写了require(),改成ES模块的import语法。比如把const _ = require('lodash')改成import _ from 'lodash',同时确保依赖包支持ES模块(多数现代包都支持)。确认使用Hugo Extended版本
js.Build功能仅支持Hugo Extended版本,运行hugo version查看版本标识,确保带有extended字样,否则重新下载安装Extended版本。模板中正确引用JS
在Hugo模板里引用编译后的JS时,给script标签加上type="module"属性:<script type="module" src="{{ resources.Get "js/main.js" | js.Build | relURL }}"></script>让浏览器以ES模块方式解析脚本,避免require未定义的报错。
清理缓存重新构建
旧缓存可能导致配置不生效,运行hugo clean清理缓存,再执行hugo server或hugo build重新构建项目。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

