【问题标题】:JavaScript NodeJs Open LibraryJavaScript NodeJs 开放库
【发布时间】:2021-02-28 06:45:39
【问题描述】:

我正在尝试使用 npm open 库在存储在我的文件夹中的默认 Windows 照片查看器中同时打开多个图像:

let files = ['Dog.gif', 'Cat.jpeg'];
for(let i=0; i<files.length; i++){
  open(`${files[i]}`, {wait:true});
}

但它只打开第一个文件?我不确定如何解决这个问题?

【问题讨论】:

  • 从未做过类似的事情,但wait: true 参数会导致问题吗?
  • 不,我尝试删除它,但没有成功
  • 设置为假
  • 不,那也没用

标签: javascript node.js file npm


【解决方案1】:

在我的情况下,这是因为文件名或文件类型不存在或与源文件不匹配

【讨论】:

    【解决方案2】:

    {wait: true} 应该会导致open() 等到您退出打开文件的应用程序后再恢复执行。因此,如果您希望它们同时打开,请删除 {wait: true} 选项。

    事实上,如果您确实希望它等到应用程序退出后再打开第二个文件并让它只打开一个文件,请继续阅读以获取一些最少的调试帮助。

    假设您使用的是最新版本的 open,它是一个基于 Promise 的 API。似乎很难解决错误。但是,您至少可以确认您遇到了这样的错误:

    const open = require('open');
    
    let files = ['dog.txt', 'cat.txt'];
    (async () => {
      for(let i=0; i<files.length; i++){
        const cp = await open(`${files[i]}`, {wait: true});
        console.log(`${files[i]} exit code: ${cp.exitCode}`);
      }
    })();
    

    这将为open() 成功的所有文件打印错误代码0,为open() 失败的所有文件打印非零值。

    【讨论】:

    • 删除 {wait: true} 选项并运行此代码后,我的两个图像都出现 exit code: null 但第一张图像仍然打开?
    • 您不能在第二个建议中删除wait 并期望得到exitCode,因为open() 不会在返回之前等待进程退出。做一个或另一个,而不是两个。
    • 好的,所以我只想同时打开 2 个图像文件,我使用了 async 和 await 和 {wait: true},它似乎正在工作。
    猜你喜欢
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多