云服务器运行Node JS程序报错:SyntaxError: Unexpected reserved word
解决Node.js中
await语法错误的方案 错误原因
你遇到的SyntaxError: Unexpected reserved word是因为await关键字只能在async函数内部或者Node.js支持的顶层await环境中使用,当前代码的使用方式不符合规则,或者服务器上的Node.js版本不支持相关特性。
具体解决步骤
1. 检查并升级Node.js版本
顶层await需要Node.js 14.8.0及以上版本支持。在服务器终端执行以下命令查看当前版本:
node -v
如果版本低于14.8.0,可通过nvm(Node版本管理器)升级:
# 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重启终端后安装最新LTS版本 nvm install --lts # 设置默认版本 nvm alias default node
2. 修正await的使用位置
若不想依赖顶层await,或Node.js版本无法升级,将包含await的代码包裹在async函数中:
// 替换原来的直接await代码 async function loadTranslationData() { try { const myObj = await Fs.readJson('translation.json'); // 这里编写使用myObj的业务逻辑 console.log('加载翻译数据成功:', myObj); } catch (err) { console.error('加载翻译数据失败:', err); } } // 调用async函数 loadTranslationData();
3. 启用ES模块以支持顶层await(可选)
若想保留顶层await写法,需将项目设置为ES模块:
- 在项目根目录的
package.json中添加:"type": "module" - 注意:启用ES模块后,需将
require()语法替换为import,比如:// 替换 const Fs = require('fs-extra') import Fs from 'fs-extra';
4. 确认依赖安装完整
确保服务器上已正确安装fs-extra模块:
cd /root/BCM_Demo npm install fs-extra
内容的提问来源于stack exchange,提问作者Peter Smith
相关产品推荐
相关产品推荐

