首页 > 解决方案 > 无法使用 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。

我面临的问题是什么?

标签: javascriptnode.jselectronpuppeteer

解决方案


您没有在等待test调用,因此程序很可能在有机会在函数中启动网页之前运行到结束。

将代码更改为:

document.getElementById("startTask").onclick = async () =>{
    try{

       console.log("working")
       await test();
    
    } catch(err){

        console.log(err)
    }
}

推荐阅读