最典型原因是误用标签引入layui.css,浏览器将其当作js解析导致unexpected identifier错误;正确方式应为。

layui.css 被当 JS 执行导致 Unexpected identifier
这是最典型的误用场景:把 layui.css 用 <script></script> 标签引入。浏览器会尝试把 CSS 文件当作 JavaScript 解析,而 CSS 里的 .、{、: 等符号在 JS 语法里全是非法起始符,于是报 Unexpected identifier '.' 或类似错误。
检查你的 index.html 中是否写了这样的代码:
<script src="layui/css/layui.css"></script>
必须改成标准的 CSS 引入方式:
<link rel="stylesheet" href="layui/css/layui.css">
-
src属性只用于<script></script>和<img>等资源标签,<link>用的是href - 别混淆
type="text/css"(旧写法)和type="module"(JS 模块),前者可省略,后者绝不能加在<link>上 - 如果用了构建工具(如 vite / webpack),确保未把
css路径错配进import语句中,例如import 'layui/css/layui.css'在非 CSS-in-JS 场景下也可能触发解析异常
layui.js 加载顺序或路径错误引发 identifier 报错
当 layui.js 本身加载失败(比如 404),而页面又调用了 layui.use 或 layui.jquery,浏览器会把返回的 HTML 错误页(如 Nginx 的 404 页面)当 JS 执行——开头就是 ,于是立刻抛出 <code>Unexpected token '。
这不是 layui 本身的 bug,而是路径配置问题。排查重点:
- 打开浏览器 Network 面板,过滤
layui.js,确认状态码是200还是404/403 - 检查
<script src="xxx"></script>中的路径是否相对于当前 HTML 文件位置;例如index.html在/admin/index.html,那src="layui/layui.js"就要对应/admin/layui/layui.js - 避免使用
file://协议直接双击打开 HTML —— 此时跨域限制会让 fetch/XHR 失效,部分 layui 模块初始化逻辑可能静默失败并触发语法解析异常
模块写法中漏写 from 或括号不匹配
如果你在用 layui 的模块化写法(如 layui.use(['layer', 'form'], function(){...})),但后续自己写的 JS 里混入了 ES6 模块语法(比如 import { xxx } from 'yyy'),而运行环境不支持,也会报 Unexpected identifier。
典型错误包括:
-
import layer from 'layui-layer'→ layui 官方不提供 ESM 包,这种写法在未经过构建处理时必然失败 -
layui.use('table', () => { ... })里箭头函数没加async却用了await,或函数体大括号未闭合 - 对象字面量中漏逗号,比如
layui.use(['table'], function(){ table.render({ elem: '#demo', url: '/api' height: 300 }); })(url后少逗号)
这类错误行号通常指向你自己的 JS 块,而非 layui 源文件,所以别急着换版本,先看控制台报错定位到哪一行、再查那一行前后三行的标点和关键字。
CDN 引入地址失效或被劫持
用 CDN(如 https://cdn.jsdelivr.net/npm/layui@2.9.8/dist/layui.js)时,如果链接已过期、域名不可达,或中间代理返回了 HTML 内容(如运营商劫持页、登录页),浏览器一样会尝试执行 HTML,从而报 Unexpected token '。
验证方法很简单:
- 把
src地址粘贴到新标签页直接访问,看返回的是 JS 内容还是 HTML - 对比响应头中的
Content-Type:正确应为application/javascript,若返回text/html就是源头错了 - 临时切回本地文件引入,确认是否问题消失——能快速锁定是网络层还是代码层问题
线上项目尤其要注意 CDN 版本是否已被作者归档,Layui 2.x 的 npm 包已不再维护,@2.9.8 可能某天就 404。











