Node.js中使用module.exports跨文件获取inquirer输入的file值问题
问题解决方法
首先修正两个核心错误点:
- 模块引入路径错误:你当前写的
require("/inputs")是读取系统根目录的inputs文件,同目录下的文件引入需要使用相对路径,改为require("./inputs") askingInputs返回值为Promise:inquirer的prompt方法是异步的,返回的是Promise对象,不能同步直接取值,需要使用异步方案(async/await或者.then回调)处理
修正后的file.js代码(async/await写法,更易读)
const fs = require("fs"); const inputs = require("./inputs"); // 修正引入路径 module.exports = { // 给方法加上async关键字支持await readingFile: async () => { // 等待用户输入完成,解构拿到返回的file字段值 const { file } = await inputs.askingInputs(); // 把拿到的file参数拼到读取路径中 fs.readFile(`./files/${file}`, "utf8", (err, data) => { if (err) { console.error(err); return; } console.log(data); }); }, };
可选回调写法(无需async)
const fs = require("fs"); const inputs = require("./inputs"); module.exports = { readingFile: () => { inputs.askingInputs().then(({ file }) => { fs.readFile(`./files/${file}`, "utf8", (err, data) => { if (err) { console.error(err); return; } console.log(data); }); }).catch(err => { console.error('获取用户输入失败:', err) }) }, };
注意:请确保inputs.js文件顶部已经引入了inquirer依赖,添加
const inquirer = require('inquirer')代码,否则会抛出inquirer未定义的错误。
内容的提问来源于stack exchange,提问作者Ernesto Diaz
相关产品推荐
相关产品推荐

