Javascript Electron无法打印多个PDF文件,错误322225477

Javascript Electron无法打印多个PDF文件,错误322225477,javascript,pdf,printing,electron,Javascript,Pdf,Printing,Electron,我在Electron上打印多个PDF时遇到一些问题 这就是my JS中发生的情况:单击按钮触发的函数隐藏了用户在应用程序启动时看到的内容,并显示了一些其他内容,然后将这些内容打印到特定位置。完成后,my js将隐藏当前内容并显示其他内容,然后调用再次保存pdf的函数并将该pdf保存到其他位置 第一个文件被保存,一切顺利,但当我再次调用打印pdf的函数时,它会向我抛出一个错误,这个错误甚至没有被回调函数捕获。。。(见图片) 我试着切换两个PDF创建,第一个总是有效的,不管显示哪一个内容。 我已经尝

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

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

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

我试着切换两个PDF创建,第一个总是有效的,不管显示哪一个内容。 我已经尝试使用Async和Sync函数来编写pdf文件(fs.writeFile和fs.writeFileSync) 我已经一个接一个地记录了我传递给函数的所有数据,它们都是正确的

在这里你可以看到:

控制台中出现错误:

npm错误!代码ELIFECYCLE npm ERR!错误号322225477 npm错误!(我的 项目名称)@1.0.0开始:
electron.
npm ERR!退出状态 322225477 npm错误!npm错误!在(我的项目名称)@1.0.0时失败 开始脚本。npm错误!这可能不是npm的问题。那里 可能是上面的其他日志输出

npm错误!此运行的完整日志可在以下位置找到:npm ERR
C:\Users\MY\u NAME\AppData\Roaming\npm-cache\u logs\2019-09-28813\u 37\u 12\u 330Z-debug.log

这是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 ]
0信息如果它以ok结尾,它就工作了
1详细cli['C:\\Program Files\\nodejs\\node.exe',
1 verbose cli'C:\\Program Files\\nodejs\\node\u modules\\npm\\bin\\npm cli.js',
1详细cli“开始”]
2信息使用npm@6.9.0
3信息使用node@v10.16.3
4详细的运行脚本['prestart','start','poststart']
5信息生命周期(我的项目名称)@1.0.0~开始前:(我的项目名称)@1.0.0
6信息生命周期(我的项目名称)@1.0.0~开始:(我的项目名称)@1.0.0
7详细生命周期(我的项目名称)@1.0.0~开始:生命周期中的不安全perm为true
8详细生命周期(我的项目名称)@1.0.0~开始:路径:C:\Program Files\nodejs\node\u modules\npm\node\u modules\npm lifecycle\node gyp bin;C:\(我的项目名称)\node\u 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:\ProgramFiles\nodejs\;C:\Users\MY\u NAME\AppData\Local\Microsoft\WindowsApps;C:\Users\liux\AppData\Roaming\npm;C:\Users\MY\u NAME\AppData\Local\atom\bin
9详细生命周期(我的项目名称)@1.0.0~start:CWD:C:\(我的项目名称)
10愚蠢的生命周期(我的项目名称)@1.0.0~start:Args:['/d/s/c','electron']
11愚蠢的生命周期(我的项目名称)@1.0.0~开始:返回:代码:322225477信号:null
12信息生命周期(我的项目名称)@1.0.0~启动:无法执行启动脚本
13详细堆栈错误:(我的项目名称)@1.0.0开始:`electron`
13详细堆栈退出状态322225477
13 EventEmitter上的详细堆栈。(C:\Program Files\nodejs\node\u modules\npm\node\u modules\npm lifecycle\index.js:301:16)
13 EventEmitter.emit上的详细堆栈(events.js:198:13)
13子进程上的详细堆栈。(C:\Program Files\nodejs\node\U modules\npm\node\U modules\npm lifecycle\lib\spawn.js:55:14)
13 ChildProcess.emit上的详细堆栈(events.js:198:13)
13 maybeClose的详细堆栈(internal/child_process.js:982:16)
13 Process.ChildProcess.\u handle.onexit处的详细堆栈(internal/child\u Process.js:259:5)
14详细的pkgid(我的项目名称)@1.0.0
15详细cwd C:\(我的项目名称)
16详细窗口\u NT 10.0.18362
17详细argv“C:\\Program Files\\nodejs\\node.exe”“C:\\Program Files\\nodejs\\node\U模块\\npm\\bin\\npm cli.js”“开始”
18详细节点v10.16.3
19详细的npm v6.9.0
20错误代码ELIFECYCLE
21错误号:322225477
22错误(我的项目名称)@1.0.0开始:`electron`
22错误退出状态322225477
23(我的项目名称)@1.0.0启动脚本出现错误。
23错误这可能不是npm的问题。上面可能还有其他日志输出。
24详细退出[322225477,真]

也有同样的问题。Electron将在状态代码为322225477时崩溃

问题

问题是这被称为太快。似乎需要等待几毫秒才能再次调用该函数

解决方案

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

等待新承诺(resolve=>setTimeout(resolve,100));

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

我发现使用sleep函数延迟下一个打印函数的执行可以解决问题。然而这是不正常的,我使用的每个函数都是同步的,在它完成之前不应该执行任何其他操作。。。有人能解释一下吗?