簡體   English   中英

使用 pkg 打包為可執行文件時,Node JS cli 腳本崩潰

[英]Node JS cli script crashing when packaged to a executable with pkg

一個非常簡單的 web 自動化腳本,用於使用 puppeteer 填寫表單,當我使用node filename.js運行它時,它在我的 IDE 中完美運行

但是當我用pkg它打包成一個可執行文件時,它在第一個輸入實例上崩潰而沒有拋出任何錯誤,我不希望直接解決這個問題,但也許有人有類似的經歷,可以告訴我可能是什么造成這種情況,因為我現在不知道該怎么做。

代碼:

    const puppeteer = require('./node_modules/puppeteer')

const parse = require('csv-parse');
const fs = require('fs');
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const data = [];

menu()

async function menu() {
    console.log("Please select a option\n\n" +
    "1. The Streets raffle\n" +
    "2. Footshop raffle\n" +
    "3. Exit");
    rl.question("", async function(answer) {
        console.log(`user choice: ${answer}`);

        if(answer === "1") {
            console.log("streets module starting");
            await streets_module();
        }
        else if(answer === "2") {
            console.log("In development, press enter to exit");
            rl.question("", async function(answer) {
            });
            rl.close;
            process.exit(0);
        }
        else if(answer === "3"){
            console.log("Now exitting...");
            rl.close;
            process.exit(0);
        }
        else {
            console.log("undefined choice, exitting...");
            rl.close;
            process.exit(0);
        }
        
    });
}

async function streets_module() {
    fs.createReadStream("profiles.csv") // this part can be omitted and instead the array from below can be assigned to the data variable
    .pipe(parse({ delimiter: ',' }))
    .on('data', (r) => {
        //console.log("r: ", r);
        data.push(r);        
    })
    .on('end', async () => {
        //console.log("data: ",data);
        //console.log("data at 1: ", data[1][0]); // prvy profil

        console.log("data length: ", data.length, data);

        for (let ii = 1; ii < data.length; ii++) {
            //console.log("this triggered");
            //C:\chrome-win\chrome.exe
            //console.log("async block triggered");
            console.log(`profile ${ii} started`)
            const browser = await puppeteer.launch({ignoreDefaultArgs: ['--disable-extensions']});
            const page = await browser.newPage();
            await page.goto('https://www.thestreets.sk/online-raffle/');
            await page.type("#name", data[ii][0]); // ,{ delay: 100 });
            await page.type("#yourEmail", data[ii][1]);//, { delay: 100 });
            await page.type("#phone", data[ii][2]);//, { delay: 100 });
            await page.type("#street", data[ii][3]);//, { delay: 100 });
            await page.type("#city", data[ii][4]);//, { delay: 100 });
            await page.type("#psc", data[ii][5]);//, { delay: 100 });
            await page.select('select#state', data[ii][6]);//, { delay: 100 }); 
            await page.select('select#prefered_size_sel', data[ii][7]);//, { delay: 100 });
            await page.$eval('input[name="agreed_personal_info_tiny_contact_form"]', check => check.checked = true);
        
        
            await page.screenshot({ path: 'streets' + ii + '.png' });
        
            await page.click('input[name="submit"]');
            
            //console.log("async block finished");
            console.log(`profile ${ii} finished`);
            await browser.close();
        }
        console.log("all profiles traversed, closing...");
        process.exit(0);
    })
    
}

csv 文件包含一些測試數據以查看表單是否正確填寫,以下是用於測試目的的數組中的數據:

    [
  [
    'Full name',
    'Email',
    'Phone number',
    'Street',
    'City',
    'Postal code',
    'State',
    'Size'
  ],
  [
    'test',
    'test@test.com',
    '090123456789',
    'ulica',
    'Presov',
    '10902',
    'SVK',
    '5W'
  ],
  [
    'test 2',
    'test2@test.com',
    '090123452789',
    'ulica2',
    'Presov2',
    '10903',
    'SVK',
    '6W'
  ]
]

問題的視頻:問題的視頻展示

感謝您走到這一步,並就 exe 文件崩潰的原因提出任何可能的建議:)

嘗試用絕對路徑替換 csv 文件名,以防被訪問的目錄不同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM