node.js - ENOENT:没有这样的文件或目录,打开 '/path/to/file'
问题描述
我正在通过 Node.js 中的子进程生成运行 Python 脚本。python 脚本所做的是获取上传的文件,将其解压缩,然后在“resumes”文件夹中生成一个 JSON 文件。当我上传文件时,我看到在“简历”文件夹中生成了 JSON。但是,程序找不到文件并返回“找不到文件”。如果我第二次上传相同的文件,程序会找到该文件。
const reqFiles = []
const url = req.protocol + '://' + req.get('host')
for (var i = 0; i < req.files.length; i++) {
reqFiles.push(url + '/public/' + req.files[i].filename)
var ncp = require('ncp');
ncp.limit = 16;
ncp('./public', './resumes', function (err) {
if (err) {
return console.error(err);
}
console.log('done!');
});
function runScript(){
return spawn('python3', [
"-u",
path.join(__dirname, '../extract_resume_info.py'),
]);
}
const subprocess = runScript();
subprocess.stdout.on('data', (data) => {
console.log(`data:${data}`);
});
subprocess.stderr.on('data', (data) => {
console.log(`error:${data}`);
});
subprocess.on('close', () => {
console.log("Closed");
});
console.log(req.files[i].filename)
var file_path = reqFiles[i]
var uploaded_file_name = req.files[i].filename
let rawdata
if(!fs.existsSync(path.join(__dirname, '../resumes/'+uploaded_file_name+'.json'))) {
console.log("File not found");
}
else {
rawdata = fs.readFileSync(path.join(__dirname, '../resumes/'+uploaded_file_name+'.json'));
}
let applicant = JSON.parse(rawdata);
console.log(applicant['name']);
由于我使用的是 spawn 和 readfileSync,Node 等待 python 脚本和文件读取完成。为什么程序在第一次运行时找不到文件?
解决方案
推荐阅读
- azure - Azure 事件中心每秒 50,000 个事件的分区和吞吐量是多少?
- gmail - Sendinblue 使用 gmail 帐户作为发件人
- python - 如何在 python 中获取 msg.htmlBody
- node.js - 为什么我无法在控制台中查看从数据库中获取的数据
- javascript - Socket.io 聊天应用程序类型错误:无法读取未定义的属性“房间”
- multithreading - Rust:在子线程内异步改变父状态
- mongodb - 如何使用 Kotlin、MongoDB 和 Jsonschema “oneof”获取正确的类类型
- python-3.x - 图书馆 yfinance 导致我无法解决的错误
- java - MANAGE_EXTERNAL_STORAGE 权限的替代方案
- go - 使用动态库编译 go