【问题标题】:Electron cannot print multiple PDF files, error 3221225477Electron 无法打印多个 PDF 文件,错误 3221225477
【发布时间】:2019-09-28 13:55:35
【问题描述】:

我在 Electron 上打印多个 PDF 时遇到了一些问题。

这就是在我的 JS 中发生的情况:通过单击按钮触发的功能隐藏了用户在应用程序启动时看到的内容并显示了一些其他内容,然后将此内容打印到特定位置。完成此操作后,我的 js 会隐藏当前内容并显示其他内容,然后调用再次保存 pdf 并将该 pdf 保存到另一个位置的函数。

第一个文件已保存,一切顺利,但是当我再次调用打印 pdf 的函数时,它会向我抛出一个错误,甚至没有被回调函数捕获的错误...(见图)

我尝试切换两个 PDF 创建,它始终是第一个有效的,无论显示哪个内容。 我尝试使用 Async 和 Sync 函数来编写 pdf 文件(fs.writeFile 和 fs.writeFileSync) 我已经控制台。我将传递给函数的所有数据一一记录下来,它们都是正确的。

在这里你可以看到:

https://imgur.com/cmwbMVc

https://imgur.com/uSWlaXP

我在控制台中遇到错误:

npm 错误!代码 ELIFECYCLE npm 错误!错误号 3221225477 npm 错误! (我的 项目名称)@1.0.0 开始:electron . npm 错误!退出状态 3221225477 npm 错误! npm 错误!在 (MY PROJECT NAME)@1.0.0 失败 启动脚本。 npm 错误!这可能不是 npm 的问题。那里 可能是上面的额外日志输出。

npm 错误!可以在以下位置找到此运行的完整日志:npm ERR!
C:\Users\MY_NAME\AppData\Roaming\npm-cache_logs\2019-09-28T13_37_12_330Z-debug.log

这是调试日志:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'start' ]
2 info using npm@6.9.0
3 info using node@v10.16.3
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle (MY PROJECT NAME)@1.0.0~prestart: (MY PROJECT NAME)@1.0.0
6 info lifecycle (MY PROJECT NAME)@1.0.0~start: (MY PROJECT NAME)@1.0.0
7 verbose lifecycle (MY PROJECT NAME)@1.0.0~start: unsafe-perm in lifecycle true
8 verbose lifecycle (MY PROJECT NAME)@1.0.0~start: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\(MY PROJECT NAME)\node_modules\.bin;C:\Program Files\AdoptOpenJDK\jdk-11.0.4.11-hotspot\bin;C:\Program Files\AdoptOpenJDK\jre-11.0.4.11-hotspot\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Users\MY_NAME\AppData\Local\Microsoft\WindowsApps;C:\Users\liux_\AppData\Roaming\npm;C:\Users\MY_NAME\AppData\Local\atom\bin
9 verbose lifecycle (MY PROJECT NAME)@1.0.0~start: CWD: C:\(MY PROJECT NAME)
10 silly lifecycle (MY PROJECT NAME)@1.0.0~start: Args: [ '/d /s /c', 'electron .' ]
11 silly lifecycle (MY PROJECT NAME)@1.0.0~start: Returned: code: 3221225477  signal: null
12 info lifecycle (MY PROJECT NAME)@1.0.0~start: Failed to exec start script
13 verbose stack Error: (MY PROJECT NAME)@1.0.0 start: `electron .`
13 verbose stack Exit status 3221225477
13 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:301:16)
13 verbose stack     at EventEmitter.emit (events.js:198:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:198:13)
13 verbose stack     at maybeClose (internal/child_process.js:982:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid (MY PROJECT NAME)@1.0.0
15 verbose cwd C:\(MY PROJECT NAME)
16 verbose Windows_NT 10.0.18362
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
18 verbose node v10.16.3
19 verbose npm  v6.9.0
20 error code ELIFECYCLE
21 error errno 3221225477
22 error (MY PROJECT NAME)@1.0.0 start: `electron .`
22 error Exit status 3221225477
23 error Failed at the (MY PROJECT NAME)@1.0.0 start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 3221225477, true ]

【问题讨论】:

  • 我发现使用睡眠功能延迟执行下一个打印功能可以解决问题。但是这不正常,我使用的每个功能都是 SYNC 并且在完成之前不应该执行任何其他操作......有人可以解释一下吗?

标签: javascript pdf printing electron


【解决方案1】:

遇到了同样的问题。 Electron 会崩溃,状态码为3221225477

问题

问题是win.webContents.printToPDF() 被调用太快了。您似乎需要等待几毫秒才能再次调用该函数。

解决方案

确保在开始下一个打印作业之前等待一段时间。在您的打印语句后面添加这样的语句,以便在开始下一个打印作业之前等待一段时间:

await new Promise(resolve => setTimeout(resolve, 100));

此代码将等待 100 毫秒,然后再继续。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2020-06-10
    • 2011-11-03
    • 2021-08-18
    • 2013-02-16
    • 1970-01-01
    相关资源
    最近更新 更多