base路径须用相对路径(如'js/'),禁用以/开头;独立路径模块需加{/}前缀;layui.extend()必须在config后、use前调用;调试优先查Network面板请求URL。

base 路径必须以相对路径开头,不能以 / 开头(线下测试时)
本地文件系统打开 HTML 时,浏览器会把 / 解析为磁盘根目录(如 C:/),而不是项目根目录,导致模块加载 404。比如写 base: '/js/',实际请求的是 file:///js/common.js,必然失败。
正确做法是去掉开头的斜杠,用纯相对路径:
-
base: 'js/'→ 加载js/common.js -
base: '../lib/layui/modules/'→ 从当前 HTML 所在目录向上跳一级再进lib/... - 避免
base: '/js/'、base: '/static/layui/modules/'这类写法(除非部署在 Web 服务器且路径严格匹配)
如何用 {/} 写绝对路径或 CDN 地址
当模块需要脱离 base 独立定位(比如引用 CDN 上的 Vue,或项目根目录下的 common.js),必须在 extend 的模块路径前加 {/} 前缀。
它不是语法糖,而是 Layui 的硬编码识别标记,不加就一定会拼接 base:
-
extend: { vue: '{/}https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js' }→ 正确加载 CDN -
extend: { auth: '{/}auth/authModule.js' }→ 从域名根路径加载,等价于https://your.com/auth/authModule.js -
extend: { auth: 'auth/authModule.js' }→ 错误!会被拼成js/auth/authModule.js(假设base: 'js/')
layui.config() 和 layui.extend() 的调用顺序不能错
Layui 的配置是“一次性生效”,extend 必须在 config 之后、任何 lay.use() 之前执行,否则自定义模块名不会被识别。
典型错误顺序:
- 先
lay.use(['myMod'], ...)→ 报错Can't find module: myMod - 后
layui.extend({ myMod: '...' })→ 已失效
正确写法(放在所有 lay.use 前,通常紧贴 <script src="layui.js"></script> 后):
layui.config({
base: 'js/'
}).extend({
common: 'common',
uploader: '{/}extend/uploader/uploader'
});
// ✅ 此时再调用 lay.use(['common', 'uploader']) 才有效
调试时看 Network 面板比看控制台报错更可靠
Layui 加载失败时,控制台可能只显示模糊的 Can't find module,但真正原因常藏在 Network 面板里:
- 检查请求 URL 是否拼错了路径(比如多了一层
modules/modules/) - 确认状态码是 404 还是 403(后者可能是服务器禁止了 .js 直链)
- 注意响应内容:如果返回的是 HTML 页面(如 Nginx 默认 404 页面),说明路径完全没命中静态资源
- 禁用缓存重刷(Ctrl+F5),避免旧版
config配置残留
路径问题本质是字符串拼接逻辑,只要 Network 里看到的 URL 不是你预期的物理路径,就说明 base 或 extend 的写法有偏差——别猜,直接看请求地址。


















