uni-app Uncaught SyntaxError: Invalid or unexpected token

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app Uncaught SyntaxError: Invalid or unexpected token

示例代码:

操作步骤:

  • 搞一个项目,写个一个礼拜,保证出现

预期结果:

  • 能正常编译,热更新、调试

实际结果:

  • 改一个字,敲一个空格,或者回车,就可能异常,或者正常,非常无礼错误!

bug描述:

  • 写代码,ctrl+ s 时经常报错,因为同步热更新,调试,
  • 比如任何一个页面,只要改一个字母,然后保存,就有可能出现,问题,随着项目越大,出现的概率就越多,
  • 我打开了调试器,看到的说明大概是这样的
  • 我有一个页面叫work.nvue
  • 然后改动了一个字母,就报错了,实际上你敲一个空格,也会如此,当出现问题了,你继续敲空格,然后保存,可能又好了,也可能不好,问题依旧。
  • 同时我发现,出现错误时。这个work.js文件,生成js代码应该不对,
  • 我上传了附加,
  • 异常的时候生成的js代码不对,漏了衡多代码,
  • 我比对了这一行,这一行eval()内的字符串也不一样。
  • 我非常怀疑,是在编译work.nvue时,发生了异常,导致了 work.js文件内容是异常的内容。特别是eval这个里面的内容导致的,可能是一个双引号?或者一个单引号?或者是注释(///**/),非常可能是这些符号没有配对导致的。
  • 也可能是其他问题,上述只是猜测。
  • 网官方注意!!!!!这个问题非常频繁。生成的js文件异常,导致出现保存代码时的乱七八糟的js报错!!!!!!
  • 最后一个图,生成的代码,肯定是有问题的,*/没有/缺少一个斜杠

Image Image Image Image

信息类别 信息内容
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 Android
手机系统版本号 Android 9.0
手机厂商 小米
手机机型 荣耀青春10
页面类型 nvue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

1 回复

针对您遇到的 uni-app 中的 Uncaught SyntaxError: Invalid or unexpected token 错误,这通常是由于代码中存在语法错误导致的。这种错误可能由多种原因引起,比如不匹配的括号、引号、非法字符等。为了帮助您定位和解决问题,以下是一些常见的错误场景及相应的代码检查和修正示例。

1. 字符串未正确闭合

错误代码示例

let message = "Hello, world;
console.log(message);

修正后

let message = "Hello, world";
console.log(message);

2. 对象或数组字面量中的语法错误

错误代码示例

let obj = {
    name: "John",
    age 30  // 缺少冒号
};

修正后

let obj = {
    name: "John",
    age: 30
};

3. 模板字符串中的错误

如果您在 uni-app 中使用模板字符串,确保模板标签(反引号)正确闭合,并且表达式插值(${})正确无误。

错误代码示例

let greeting = `Hello, ${name; // 缺少闭合括号和反引号

修正后

let name = "Alice";
let greeting = `Hello, ${name}`;

4. 非法字符或隐藏字符

有时候,从其他地方复制代码可能会引入不可见的特殊字符或编码问题。检查并移除这些字符。

检查方法:尝试手动重新键入有问题的代码行。

5. JSON解析错误

如果您在 uni-app 中处理 JSON 数据,确保 JSON 格式正确。

错误代码示例

let data = {name: "John", "age": 30, };  // 末尾多余的逗号
JSON.parse(JSON.stringify(data));

修正后

let data = {name: "John", "age": 30};
JSON.parse(JSON.stringify(data));

总结

确保您的代码遵循正确的语法规则,特别是字符串、对象、数组和模板字符串的使用。如果错误消息指向特定文件或行号,首先检查那一行代码及其周围的代码。如果问题依旧存在,尝试将代码片段简化或逐步注释掉部分代码以定位具体错误位置。希望这些示例能帮助您解决问题!

回到顶部