Electron에서 Nightmare를 사용할 때주의하십시오.
Nightmare가 아니라 Eramthgin 사용
Make nightmare isomorphic 하지만, 언급되고 있듯이, Electron 내부로부터 Nightmare 를 기동하는 기능은 실장중인 것 같다.
대신에 [email protected]
를 사용하면 좋다고 써 있다.
렌더러 프로세스가 아닌 메인 프로세스에 쓰기
또한 위에서 보완하는 느낌으로, 모체의 Electron의 node를 사용하는 관계상 또는 메인 프로세스에 쓰는 것으로 기재되어 있다.
LandingPage.vue<template>
<div id="wrapper">
<button @click="add">お試し</button>
</div>
</template>
<script>
import { ipcRenderer } from 'electron'
export default {
name: "landing-page",
methods: {
add() {
const result = ipcRenderer.sendSync('sync', '引数')
console.log(result)
}
}
};
</script>
렌더러 프로세스에서 메인 프로세스와 통신합니다.ipcRenderer
를 사용한다.
index.jsimport { app, Menu, BrowserWindow, ipcMain } from 'electron'
// 中略
const Nightmare = require("eramthgin");
const nightmare = Nightmare({
show: true,
backgroundColor: '#fff'
});
ipcMain.on('sync', (event, arg) => {
nightmare
.goto("https://google.com/") // 指定URLに遷移
.wait(1000)
.screenshot(require('path').join(__dirname, 'screenshot1.png'))
.end()
.then(function () { console.log("Screenshot Saved") })
.catch(function (error) {
console.error('test failed:', error);
});
console.log(arg)
event.returnValue = 'pong';
})
스크린샷은 소스를 수정해야 합니다.
모체의 Electron 의 버젼이 3x 이므로, 그대로라면 .screenshot()
(을)를 사용하면 동작이 멈춘다.
eramthgin은 2 년 전이기 때문에 오래되었습니다.
그래서 /node_modules/eramthgin/lib/runner.js
와 /node_modules/eramthgin/lib/actions.js
의 2개를 수정한다.
runner.jsparent.respondTo('screenshot', function (path, clip, done) {
// https://gist.github.com/twolfson/0d374d9d7f26eefe7d38
var args = [function handleCapture(img) {
// done(null, img.toPng());
done(null, img.toPNG());
}];
if (clip) args.unshift(clip);
frameManager.requestFrame(function() {
win.capturePage.apply(win, args);
});
});
img.toPng()
에서 img.toPNG()
로 수정한다.
actions.jsexports.screenshot = function (path, clip, done) {
debug('.screenshot()');
if (typeof path === 'function') {
done = path;
clip = undefined;
path = undefined;
} else if (typeof clip === 'function') {
done = clip;
clip = (typeof path === 'string') ? undefined : path;
path = (typeof path === 'string') ? path : undefined;
}
this.child.call('screenshot', path, clip, function (error, img) {
// var buf = new Buffer(img.data);
var buf = new Buffer(img);
debug('.screenshot() captured with length %s', buf.length);
path ? fs.writeFile(path, buf, done) : done(null, buf);
});
};
img.data
를 img
에.toPNG()
로 한 것에 의해, img
에는 바이너리가 들어가는 모양.
그럼 좋은 Electron Life를
Reference
이 문제에 관하여(Electron에서 Nightmare를 사용할 때주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/axcelwork@github/items/9c5961fedac3e15dccf4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
또한 위에서 보완하는 느낌으로, 모체의 Electron의 node를 사용하는 관계상 또는 메인 프로세스에 쓰는 것으로 기재되어 있다.
LandingPage.vue
<template>
<div id="wrapper">
<button @click="add">お試し</button>
</div>
</template>
<script>
import { ipcRenderer } from 'electron'
export default {
name: "landing-page",
methods: {
add() {
const result = ipcRenderer.sendSync('sync', '引数')
console.log(result)
}
}
};
</script>
렌더러 프로세스에서 메인 프로세스와 통신합니다.
ipcRenderer
를 사용한다.index.js
import { app, Menu, BrowserWindow, ipcMain } from 'electron'
// 中略
const Nightmare = require("eramthgin");
const nightmare = Nightmare({
show: true,
backgroundColor: '#fff'
});
ipcMain.on('sync', (event, arg) => {
nightmare
.goto("https://google.com/") // 指定URLに遷移
.wait(1000)
.screenshot(require('path').join(__dirname, 'screenshot1.png'))
.end()
.then(function () { console.log("Screenshot Saved") })
.catch(function (error) {
console.error('test failed:', error);
});
console.log(arg)
event.returnValue = 'pong';
})
스크린샷은 소스를 수정해야 합니다.
모체의 Electron 의 버젼이 3x 이므로, 그대로라면 .screenshot()
(을)를 사용하면 동작이 멈춘다.
eramthgin은 2 년 전이기 때문에 오래되었습니다.
그래서 /node_modules/eramthgin/lib/runner.js
와 /node_modules/eramthgin/lib/actions.js
의 2개를 수정한다.
runner.jsparent.respondTo('screenshot', function (path, clip, done) {
// https://gist.github.com/twolfson/0d374d9d7f26eefe7d38
var args = [function handleCapture(img) {
// done(null, img.toPng());
done(null, img.toPNG());
}];
if (clip) args.unshift(clip);
frameManager.requestFrame(function() {
win.capturePage.apply(win, args);
});
});
img.toPng()
에서 img.toPNG()
로 수정한다.
actions.jsexports.screenshot = function (path, clip, done) {
debug('.screenshot()');
if (typeof path === 'function') {
done = path;
clip = undefined;
path = undefined;
} else if (typeof clip === 'function') {
done = clip;
clip = (typeof path === 'string') ? undefined : path;
path = (typeof path === 'string') ? path : undefined;
}
this.child.call('screenshot', path, clip, function (error, img) {
// var buf = new Buffer(img.data);
var buf = new Buffer(img);
debug('.screenshot() captured with length %s', buf.length);
path ? fs.writeFile(path, buf, done) : done(null, buf);
});
};
img.data
를 img
에.toPNG()
로 한 것에 의해, img
에는 바이너리가 들어가는 모양.
그럼 좋은 Electron Life를
Reference
이 문제에 관하여(Electron에서 Nightmare를 사용할 때주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/axcelwork@github/items/9c5961fedac3e15dccf4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
parent.respondTo('screenshot', function (path, clip, done) {
// https://gist.github.com/twolfson/0d374d9d7f26eefe7d38
var args = [function handleCapture(img) {
// done(null, img.toPng());
done(null, img.toPNG());
}];
if (clip) args.unshift(clip);
frameManager.requestFrame(function() {
win.capturePage.apply(win, args);
});
});
exports.screenshot = function (path, clip, done) {
debug('.screenshot()');
if (typeof path === 'function') {
done = path;
clip = undefined;
path = undefined;
} else if (typeof clip === 'function') {
done = clip;
clip = (typeof path === 'string') ? undefined : path;
path = (typeof path === 'string') ? path : undefined;
}
this.child.call('screenshot', path, clip, function (error, img) {
// var buf = new Buffer(img.data);
var buf = new Buffer(img);
debug('.screenshot() captured with length %s', buf.length);
path ? fs.writeFile(path, buf, done) : done(null, buf);
});
};
Reference
이 문제에 관하여(Electron에서 Nightmare를 사용할 때주의하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/axcelwork@github/items/9c5961fedac3e15dccf4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)