laypage is not defined 错误是因为未通过 layui.use(['laypage'], callback) 显式加载 laypage 模块,即使已引入 layui.js;v2.8+ 中 laypage 不再内置,必须在 use 数组中明确声明且在回调内调用。

laypage is not defined 是模块没加载,不是拼写或语法问题
这个错误和 layui is not defined 同类,本质是 JavaScript 执行时找不到 laypage 这个函数——它根本没被注册进 layui 全局对象。Layui 的模块(包括 laypage、table、layer)默认不自动挂载,必须显式 use 才能用。
- 直接调用
layui.laypage.render()前,没执行layui.use('laypage', function(){...}),就会报这个错 - 即使引入了
layui.js,如果只写了layui.use('table'),laypage依然不可用 - 注意:Layui v2.8+ 中
laypage不再是内置模块,必须单独声明依赖,不能假设“用了 table 就有 laypage”
正确引入 laypage 模块的写法
必须在 layui.use() 的模块数组里明确列出 'laypage',且回调函数内才能安全调用:
layui.use(['laypage'], function(){
var laypage = layui.laypage;
laypage.render({
elem: 'pagination',
count: 100,
jump: function(obj){
console.log('当前页:', obj.curr);
}
});
});
- 别漏掉引号:
'laypage'是字符串,不是变量名 - 别写成
layui.use('laypage')(少了一层数组),v2.7+ 会静默失败,不报错但模块不加载 - 如果同时要用
table和laypage,写成layui.use(['table', 'laypage']),不要拆成两个use
为什么有时不报错,有时又报?常见干扰点
错误是否出现,取决于代码执行时机和模块加载状态。容易踩坑的地方:
- 把
laypage.render()写在layui.use()外部(哪怕只差一行),就一定报错 - 多个
layui.use()嵌套或异步触发,导致模块加载完成前就执行了 render - 使用了自定义打包版
layui.js,但构建时没包含laypage模块(检查源码里是否有laypage:定义) - CDN 引入地址写错,比如用了旧版 CDN(
https://cdn.staticfile.org/layui/2.6.8/layui.js),而laypage在 2.7+ 才独立为可选模块
调试时快速确认 laypage 是否可用
在控制台输入以下任一命令,返回函数说明已加载成功:
<pre class="brush:php;toolbar:false;">typeof layui.laypage === 'function' // 或 layui['laypage']
- 如果返回
undefined,说明模块没加载,回溯检查 <code>layui.use()调用位置和参数 - 如果返回
function但调用仍报错,大概率是elem找不到 DOM 节点(比如 ID 写错或元素还没渲染),和laypage is not defined无关 - 注意:
laypage模块本身不依赖 CSS,但分页样式需要layui.css,否则 UI 错乱——这不会导致该报错,但会影响使用体验
laypage 必须显式申领,一步都不能省。


















