You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用await运行读取密码代码报错,如何解决?

解决方法

报错原因是await只能在async函数内部或ES模块的顶层作用域中使用,你的代码是CommonJS脚本,顶层直接用await不符合语法规则。不需要添加exports,以下两种方案都能解决问题:

方案一:用自执行async函数包裹代码

这是最直接的修改方式,无需改变文件类型,把逻辑放在立即执行的async函数里即可:

const read = require('read').read;

(async () => {
  const password = await read({
    prompt: "Password: ",
    silent: true,
    replace: "*" // 输入的每个字符会显示为星号(可选配置)
  });
  console.log("Your password: " + password);
})();

运行命令保持不变:node read.js

方案二:转为ES模块使用顶层await

如果想保留顶层await的写法,可以将文件转为ES模块,有两种实现方式:

  1. 修改文件后缀:把文件名改为read.mjs,代码改用import语法:
import { read } from 'read';

const password = await read({
  prompt: "Password: ",
  silent: true,
  replace: "*"
});
console.log("Your password: " + password);

运行命令:node read.mjs

  1. 配置package.json:在项目根目录创建package.json,添加"type": "module"字段:
{
  "type": "module"
}

然后代码改用import语法(文件名仍为read.js),运行命令不变:node read.js

内容的提问来源于stack exchange,提问作者Alexey Starinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:56:01