javascript - 无法使用 ElectronJS 运行 NodeJS 脚本
问题描述
客观的
project/api
我在文件夹中单独编写了我的脚本。举个test.js
例子,我通过 导出它module.exports
,现在我运行我的电子窗口,并创建一个带有button id="startTask"
函数的 JavaScript 文件onclick()
。现在我想test.js
在单击按钮时执行此操作。
但它不起作用。
测试.js
const puppeteer = require('puppeteer-core');
const exec_path = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
const fs = require('fs');
async function test(){
let browser = await puppeteer.launch({headless: false, executablePath: exec_path})
let page = await browser.newPage();
if(fs.existsSync('./data/cookies.json')){
let cookie = fs.readFileSync('./data/cookies.json')
let cookieParsed = JSON.parse(cookie)
await page.setCookie(...cookieParsed)
await page.goto(BASE_URL, {waitUntil: ['load', 'networkidle0'], timeout: 0});
}else{
await browser.close();
console.log('No Cookies found')
}
}
module.exports = test;
HTML + JS
//This is located in my 'project/src' folder
//This is button.html
<button id="startTask" class = "btn btn-primary"> Start </button>
<script src="./button.js"></script>
//This is button.js
const test = require('../api/test');
document.getElementById("startTask").onclick = () =>{
try{
console.log("working")
test();
} catch(err){
console.log(err)
}
}
这是控制台上的输出
控制台上只打印“工作”,Puppeteer-script 不执行。
谢谢你的帮助!
更新(问题发布后 3 小时)
我尝试了一个正常的程序test.js
test.js(简单程序)
async function test(){
console.log("Great Cool Awesome")
}
module.exports = test;
输出
对于一个简单的程序,它执行脚本,但我的程序需要 puppeteer。
我面临的问题是什么?
解决方案
您没有在等待test
调用,因此程序很可能在有机会在函数中启动网页之前运行到结束。
将代码更改为:
document.getElementById("startTask").onclick = async () =>{
try{
console.log("working")
await test();
} catch(err){
console.log(err)
}
}
推荐阅读
- java - MongoDB Aggregation - 如何使用 spring-data-mongodb 将查询表达式应用到匹配阶段?
- android - android中是否有这样的布局方向
- c++ - 为什么代码块要求我添加“;” 在别人的条件之后?如果我添加“:”,仍然存在逻辑错误。(查看问题正文以获取更多详细信息)
- python - 如何在 selenium 中更快地从动态网站读取数据
- powershell - 无法在powershell的数组列表中获取数组到json
- c++ - 在 C++ 中使用 Set 查找数组中的重复项
- c++ - 当我使用 WNetAddConnection2 或 WNetAddConnection3 时,如何让操作系统保存我的凭据?
- wix - 我可以处理无法启动服务的错误情况吗?
- reactjs - 如何在 React Native 中跟踪用户的信用卡交易
- apache-flink - 纱线重启后如何恢复flink作业