Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用API端点时,nodeJS无法查看本地路径_Javascript_Node.js_Express_Path - Fatal编程技术网

Javascript 使用API端点时,nodeJS无法查看本地路径

Javascript 使用API端点时,nodeJS无法查看本地路径,javascript,node.js,express,path,Javascript,Node.js,Express,Path,下面的代码在独立文件中运行时运行良好。但当我尝试在API端点中使用它并用邮递员发送请求时,它似乎无法工作 我不明白为什么。在尝试使用相同的API端点编写excel文件时,我也遇到了同样的问题。如果我指定一个路径,它将找不到它。如果我只使用文件名,它将在当前目录中写得很好 我错过了什么?下面的代码来自我在独立文件中使用它时的代码。如果我在下面这条路线内使用它,它将不起作用 exports.download_excel = async (req, res) => {.... 完整代码如下 /

下面的代码在独立文件中运行时运行良好。但当我尝试在API端点中使用它并用邮递员发送请求时,它似乎无法工作

我不明白为什么。在尝试使用相同的API端点编写excel文件时,我也遇到了同样的问题。如果我指定一个路径,它将找不到它。如果我只使用文件名,它将在当前目录中写得很好

我错过了什么?下面的代码来自我在独立文件中使用它时的代码。如果我在下面这条路线内使用它,它将不起作用

exports.download_excel = async (req, res) => {....
完整代码如下

// modules import
const path = require('path');
const fs = require('fs');
const util = require('util');
const csv = require('@fast-csv/parse');
const { forEach } = require('p-iteration');

// const path = '../csv/';
const casesBO = [];


const readCSVFiles = async function() {
  try {
    const allLocalFiles = path.join('csv/');
    const readDir = util.promisify(fs.readdir);
    await readDir(allLocalFiles, async function(err, file) {
      forEach(file, async item => {
        fs.createReadStream('csv/' + item)
          .pipe(csv.parse({ headers: true, delimiter: ';' }))
          .on('error', error => console.error(error))
          .on('data', async row => {
            if (row['[REGION2]'] !== 'FR') {
              casesBO.push(row['[CALLERNO_EMAIL_SOCIAL]']);
              console.log(
                `${row['[AGENT]']} is ${row['[REGION2]']} and case = ${
                  row['[CALLERNO_EMAIL_SOCIAL]']
                }`
              );
            }
          })
          .on('end', async rowCount => {});
      });
    });
  } catch (error) {
    console.log(error);
  }
};

您正在等待readDir,但也给它一个回调函数。你不能既等待一个承诺,又给它一个回调。就这一点而言,承诺根本不以回调作为理由

此外,您在任何地方都在编写
async
,这对于不在内部等待任何内容的函数都是无用的

const readCSVFiles = async function () {
    try {
        const allLocalFiles = path.join('csv/');
        const readDir = util.promisify(fs.readdir);

        const files = await readDir(allLocalFiles);

        for (let file of files) {

            fs.createReadStream('csv/' + file)
                .pipe(csv.parse({ headers: true, delimiter: ';' }))
                .on('error', error => console.error(error))
                .on('data', row => {
                    if (row['[REGION2]'] !== 'FR') {
                        casesBO.push(row['[CALLERNO_EMAIL_SOCIAL]']);
                        console.log(
                            `${row['[AGENT]']} is ${row['[REGION2]']} and case = ${row['[CALLERNO_EMAIL_SOCIAL]']
                            }`
                        );
                    }
                })
                .on('end', rowCount => { });
        }
    } catch (error) {
        console.log(error);
    }
};

非常感谢。我还是个编程新手,你的回答对我帮助很大。我发现我需要在路径之前添加uuuuuu dirname,这样它才能工作,但是当我试图运行它时,似乎一切都会停止。用你的代码,一切都很顺利。不客气,很高兴我能帮上忙。