使用node-webvtt解析器遇Unexpected token ':'错误,求原因
解析WebVTT文件时「Unexpected token ':'」错误排查与解决
问题描述
使用node-webvtt包解析WebVTT内容时,无论传入完整文件还是片段字符串,均抛出「Unexpected token ':'」错误,即使将解析逻辑包裹在try-catch块中也无法拦截该错误,移除try-catch后错误依旧出现。
相关代码
const parsed = (err) => { try{ webvtt.parse(`WEBVTT 1 00:02:57,642 --> 00:02:58,672 Happy Monday, everybody.`); }catch(err){ console.log(err); } }
排查与解决步骤
检查时间格式细节
确认时间戳里的冒号是半角英文冒号,毫秒部分用逗号分隔(不能用句号)。你提供的示例格式没问题,但可以手动替换一遍时间里的符号,排除编码导致的全角符号问题。调整内容结构,减少多余空行
把WEBVTT后面的连续空行改成一行,保持标准WebVTT结构:webvtt.parse(`WEBVTT 1 00:02:57,642 --> 00:02:58,672 Happy Monday, everybody.`);连续多行空行可能让解析器误判结构。
更新
node-webvtt到最新版本
旧版本可能存在格式兼容bug,运行命令更新:npm update node-webvtt确认
webvtt变量已正确引入
代码开头必须有引入语句,否则解析方法无法被正确调用:const webvtt = require('node-webvtt');换文件读取方式测试
避免模板字符串的转义问题,直接读取本地文件内容解析:const fs = require('fs'); const webvtt = require('node-webvtt'); const parsed = () => { try { const content = fs.readFileSync('./your-subtitle.vtt', 'utf8'); const result = webvtt.parse(content); console.log(result); } catch (err) { console.error(err); } }
内容的提问来源于stack exchange,提问作者chicken_code
相关产品推荐
相关产品推荐

