addLocalSkillset.js报Unexpected reserved word语法错误求助
问题原因
控制台抛出的Uncaught SyntaxError: Unexpected reserved word报错,是因为在普通函数内部使用了仅允许出现在异步函数中的保留字await:
- 报错指向的第28行代码是
const request = await fetch(_URL, requestOptions);,但外层的addLocalSkillset是没有async标记的普通箭头函数 await作为JavaScript保留字,只能在async声明的异步函数、ES模块顶层作用域中使用,出现在普通函数内部时,引擎就会抛出非法保留字的语法错误,这和你是否删除headers、URL变量没有关系。- 你逐行排查没发现问题,是因为
await本身是合法关键字,只是使用的作用域不对,不属于“误用保留字做变量名”的常规场景。
修复方案
- 先解决核心语法错误:给
addLocalSkillset函数加上async标记,修改函数声明为:
const addLocalSkillset = async (workSpaceId) => {
- 顺手修复代码里隐藏的其他运行时问题,避免语法错误修复后代码无法正常运行:
_headers配置中使用的token变量没有在当前作用域定义,需要先补充对应的导入或声明逻辑- 成功返回分支里的
res.data是笔误,你定义的响应接收变量名是response,这里要改成response.data,否则会触发res is not defined的引用错误 - 提示文案存在拼写错误:
Succesfully正确拼写为Successfully,wen't为笔误,正确写法是went wrong,不影响运行但会导致提示文案不规范。
修复后完整代码
import { API_URL, API_KEY } from '../../../@constants/Global/Env'; // 若token从外部模块导入,请在此处补充对应import语句 const addLocalSkillset = async (workSpaceId) => { const newSkillset = { skills_group: `Untitled ${Math.random().toString().substring(2, 5)}`, skills_set: [], workSpaceId: workSpaceId, }; const _URL = `${API_URL}/predefinedskills`; const _headers = { 'api-key': API_KEY, 'user-token': token, // 替换为实际可用的token变量 }; const body = new FormData(); body.append('predefinedSkills', JSON.stringify(newSkillset)); const requestOptions = { method: 'POST', headers: _headers, body: body, }; try { const request = await fetch(_URL, requestOptions); const response = await request.json(); console.log('result', response); if (response.status === true) { return { data: response.data, status: true, message: 'Successfully added a skill set.', }; } else { return { status: false, message: "Something went wrong adding a skill set.", }; } } catch (error) { return { status: false, message: "Something went wrong adding a skill set.", }; } } export default addLocalSkillset;
内容的提问来源于stack exchange,提问作者bohokep350
相关产品推荐
相关产品推荐

