我正在使用NightmareJS和Electron。一切都在开发中按预期工作。但是,当我用电子打包器打包我的应用程序时,每当我尝试运行nightmareJS代码时,我都会得到一个新窗口。
我已经将NightmareJS属性show
设置为false
- 所以在打包我的应用后我不知道出了什么问题。
我有三个档案; main.js
,script.js
和index.html
请查看并告诉我为什么在打包后点击index.html
文件中的按钮获取新窗口,但不在开发中。
的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<button>Click Me</button>
<script>
var electron = require('electron');
var ipcRenderer = electron.ipcRenderer;
document.querySelector('button').addEventListener('click',()=>{
ipcRenderer.send('message','Hello');
});
</script>
</body>
</html>
main.js
const {app, BrowserWindow, ipcMain} = require('electron');
const scraper = require('./js/script')
let win;
function createWindow(){
win = new BrowserWindow({
width:935,
height:513,
frame:false,
resizable:false,
backgroundColor: '#fff'
});
win.loadURL(`file://${__dirname}/index.html`);
win.on('closed', function(){
win = null;
});
}
ipcMain.on('message',(event, data)=>{
scraper.scrape();
});
app.on('ready', createWindow);
app.on('window-all-closed', function(){
if(process.platform !== 'darwin'){
app.quit();
}
});
app.on('activate', function(){
if(win==null){
createWindow();
}
});
的script.js
module.exports.scrape = () => {
const Nightmare = require('nightmare')
const nightmare = Nightmare({
show: false,
electronPath: require('electron').app.getPath('exe')
})
nightmare
.goto('https://duckduckgo.com')
.type('#search_form_input_homepage', 'github nightmare')
.click('#search_button_homepage')
.wait('#r1-0 a.result__a')
.evaluate(() => document.querySelector('#r1-0 a.result__a').href)
.end()
.then(console.log)
.catch(error => {
console.error('Search failed:', error)
})
}
答案 0 :(得分:0)
如果您在打包应用程序后遇到问题,则很有可能是电子打包器问题。
我之前使用过电子封装器,但我遇到的问题很少。现在我正在使用更成熟,更易于使用的电子生成器。
我建议您尝试使用电子工程师打包您的应用,看看您是否再次遇到同样的问题。
您可以尝试按zulip/zulip-electron
查看电子制造商的包装配置