使用 API 端点时,nodeJS 看不到本地路径
nodeJS cannot see local path when using API endpoint
我有下面的代码,当 运行 在独立文件中时 运行 没问题。但是当我尝试在我的 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);
}
};
您正在 await
ing readDir,但您还为其提供了回调函数。你不能既 await
Promise 又给它一个回调。就此而言,Promises 根本不将回调作为参数。
而且你到处都在写 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);
}
};
我有下面的代码,当 运行 在独立文件中时 运行 没问题。但是当我尝试在我的 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);
}
};
您正在 await
ing readDir,但您还为其提供了回调函数。你不能既 await
Promise 又给它一个回调。就此而言,Promises 根本不将回调作为参数。
而且你到处都在写 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);
}
};