[英]How to run a python script in Node.js once the node.js application has been packaged using 'pkg .'
[英]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.