【发布时间】:2018-01-18 03:05:07
【问题描述】:
我正在使用一个名为 opn 的库。这使得在 electron 的主进程中生成子进程来打开文件变得更加容易。我可以使用 shell,但我需要能够检测文件何时关闭,哪个 shell API 没有提供。
每当我打开一个 excel 文件并且没有打开其他 excel 文件时,它都会正常工作,它会等到我关闭文件后才解决承诺。但是,如果打开了其他 excel 文件,则它不会等待文件关闭,它会立即解决 promise。
我在库的源代码中进行了一些挖掘,用于打开文件的命令是 Windows:start "" /wait name_of_file 其中 name_of_file 是文件的占位符。库执行的实际命令不同,但这对于我的用例来说已经足够了。即使在不使用库的情况下手动执行,我也遇到了同样的问题。也许我应该在超级用户而不是 stackoverflow 下发布这个。
这里是打开文件的代码,等待文件然后执行回调。
opn(file, { app: 'EXCEL', wait: true }).then(() => {
const stream = fs.createReadStream(file);
papa.parse(stream, {
delimiter: ',',
complete: (results) => {
mainWindow.webContents.send('uploadNewIndexFileRen', key,
results.data);
},
error: (err) => {
throw err;
}
});
}).catch((error) => { throw error; });
更新:
这是一个快速的 nodejs repo。您需要做的就是克隆/分叉来检查问题或发出拉取请求,然后执行 npm install 以下载所需的包。要重现我遇到的确切问题,您可能需要使用以下软件版本:
- 窗口 10
- npm 5.5.1
- 节点 v8.9.1
- Excel 2013
- 在 package.json 中看到的 opn 5.2.0
【问题讨论】: