我是 node.js 的新手,正在尝试设置一个脚本来监视文件夹并将保存在那里的任何文件移动到另一个位置,脚本适用于 1 个文件,但在移动多个文件时显示错误,即使它确实移动了它们 - 报告 2nd & 第三个文件丢失。我猜这是由于async/sync
节点的方法,我可能需要使用回调或承诺,但需要帮助来理解如何在这个例子中使用。
错误:
(节点:1812)UnhandledPromiseRejectionWarning:TypeError:回调不是函数
(节点:1812)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志
--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:1812)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。EOI_HUzDtR-mwMove-Item:找不到路径“C:\test2\test.txt”,因为它不存在。
代码:
const filelocation = ('c:/test/');
const destlocation = ('c:/new_folder/');
const watcher = chokidar.watch(".", { ignored: /^\./, persistent: true, cwd: filelocation, awaitWriteFinish: true });
watcher.on('add', (path) => {
var FileName = path;
logger.info(`File ${FileName} has been added to ${filelocation}`);
Movefile({param1: FileName, param2: filelocation, param3: destlocation});
});
function Movefile(options) {
var FileName = options.param1;
var filelocation = options.param2;
var destlocation = options.param3;
logger.info(`Started move for file ${FileName} in location ${filelocation} to location ${destlocation}`);
ps.addCommand("./move_file.ps1");
ps.addParameters([{ name: 'file', value: FileName }, { name: 'flocation', value: filelocation }, { name: 'dlocation', value: destlocation }]);
ps.invoke()
.then(output => {
logger.info(`Completed move of file ${FileName}`);
//ps.dispose();
})
.catch(err => {
logger.error('Move file failed to execute', err);
//ps.dispose();
});
}