【问题标题】:Electron adding files to public folder after build fails构建失败后电子将文件添加到公用文件夹
【发布时间】:2020-10-20 22:27:41
【问题描述】:

我正在使用 vue.js + vue-cli-plugin-electron-builder 构建一个电子应用程序,它显示了公共文件夹的结构,其中包括一个带有 PDF 文件的“pdf”文件夹。 我使用 pdf.js 来显示 pdf。 为了稍后在我的应用程序中拥有那个“pdf”文件夹,我复制了那个文件夹

extraFiles: [
    {
        from: "./public/pdf",
        to: "pdf"
    }

该应用程序显示所有文件夹和包含的 pdf 文件。 当我单击一个 pdf 名称时,会打开一个弹出窗口并显示 PDF。 在开发和最终构建中效果很好。

我用这个函数读取文件夹:

readdir () {
     
      var devPath = path.join(__static, '/pdf/Anbau')
      console.log("devPath development : ", devPath);
      
      var readFiles = new Promise((resolve, reject) => {
          fs.readdir(devPath, (err,files) => {
            if(err) {
              alert('Lesen fehlgeschlagen!', {type: 'error'})
              reject(err);
            } else {
              resolve(files);

              this.list = files;
              console.log('this.list: ', this.list, this.list.length)
            }
          });
        });

    },

现在的问题是,当我向其中添加新文件夹和 pdf 文件时 公共文件夹在应用程序构建后,应用程序显示新文件夹和pdf,但如果我点击生成的名称“someNewPDF.pdf”,pdf.js 会抛出错误。

带有pdf路径的控制台输出是正确的。 我发现只有在构建过程之前存在的文件以后才能访问。当我重命名 pdf 时,电子也无法显示该文件。 似乎电子在构建应用程序时创建了文件映射,后来无法更改。

所以我的问题是: 我该怎么做才能让应用程序动态读取以后可以填充/展开的文件夹。

这个想法是,用户可以将他的 pdf 文件放入一个文件夹中,并且可以通过我的应用程序查看。

我是 vue 和电子的新手。

【问题讨论】:

    标签: javascript vue.js pdf electron pdf.js


    【解决方案1】:

    我找到了解决方案: 客户现在可以将他的文件放在桌面上的“pdf”文件夹中。这个文件夹里面也是PDF.js的必要文件。 MAC和Windows桌面的路径是

    const desktopPath = app.getPath('desktop')
    

    现在我可以了

    window.open('file://' + desktopPath + '/pdf/web/viewer.html?file=' + url)
    

    而 url 保存 pdf 的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2014-03-24
      • 1970-01-01
      • 2020-08-16
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多