当我在macOS上打包电子应用程序时,由于其局限性,我永远不会使用Nightmare对文件进行模糊处理。我是否需要重新编写整个库,或者有什么方法可以解决这个问题?
答案 0 :(得分:0)
有一个解决方案。绝对不稳定且未经测试,请自担风险。而且,如果您能找到并修复作为副作用的错误,请随时分享它们:)
我们将使用名为componentDidMount() {
let { onDoubleClick } = this.props;
if (onDoubleClick) {
const rows = document
.getElementsByClassName('k-widget k-grid')[0]
.getElementsByClassName('k-grid-table')[0]
.getElementsByTagName('tbody')[0]
.getElementsByTagName('tr');
for (let i = 0; i < rows.length; i++) {
rows[i].addEventListener('dblclick', () => onDoubleClick());
}
}
}
的模块将脚本与pkg
捆绑在一起。同样为简单起见,我们将使用node
。
有一些副作用,但这是第一次使用npx
和electron
时有效。
考虑以下脚本,
nightmare
这是一个简单的脚本,请转到const Nightmare = require("nightmare");
const nightmare = Nightmare({
show: true
});
nightmare
.goto("https://example.com")
.title()
.end()
.then(console.log)
.catch(error => {
console.error(error);
});
并给我标题。
酷!让我们尝试通过example.com
和npx
使用它。代码是,
pkg
但是,我们遇到了一些令人讨厌的错误,
npx pkg app.js --target 'host'
等等,文件不会运行。
> Warning Cannot include file %1 into executable.
The file must be distributed with executable as %2.
node_modules/nightmare/lib/runner.js
path-to-executable/nightmare/runner.js
> Warning Cannot include file %1 into executable.
The file must be distributed with executable as %2.
node_modules/nightmare/lib/frame-manager.js
...
找不到所需的文件,因为它们没有捆绑在一起。我们将使用Error: spawn /home/someone/Desktop/a/electron/dist/electron ENOENT
来获取位于相关文件夹中的数据。
process.cwd()
当我运行它时,它向我展示了更多警告,但那是因为我还没有优化const nodeDir = process.cwd() + "/node_modules/"; // <- Get node modules folder
const nightmareDir = nodeDir + "nightmare"; // <-- Get nightmarejs path
const electronDir = nodeDir + "electron"; // <-- Get electron path
const Nightmare = require(nightmareDir);
const electronPath = require(electronDir);
const nightmare = Nightmare({
show: true,
electronPath // <-- use the specific electron path
});
nightmare
.goto("https://example.com")
.title()
.end()
.then(console.log)
.catch(error => {
console.error(error);
});
。然后我跑了,瞧!!
process.cwd()
这可以改进和调整,但我会把它留给你。