首页 > 解决方案 > 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 脚本和文件读取完成。为什么程序在第一次运行时找不到文件?

标签: node.js

解决方案


推荐阅读