在Mac上,当我从WebStorm运行我的应用程序时,exiftool出售的软件效果很好。但是,当我构建我的应用程序(我使用electron-builder)并将其安装在同一台Mac上时,它永远不会返回,甚至只是尝试获取版本:
exiftool.version().then(version => writeBreadcrumb('exif', version))
换句话说,运行我的应用程序的已安装版本时,不会出现错误,并且then
永远不会执行,尽管从WebStorm(使用cd build && electron .
)运行我的应用程序可以正常工作 >
我在做什么错?在电子应用程序中如何使用exiftool厂商提供的任何示例?
答案 0 :(得分:1)
您应该看一下文档中关于使它与Electron一起使用的说法:
您如何利用电子使它起作用?
众所周知,Electron易碎且有越野车,并且此包装未正式为其提供支持。尽管PhotoStructure在电子产品中使用了此软件包,但该项目有大量的辅助支持代码,以使它顺利运行。
如果您仍想尝试,请记住以下几点:
请注意,此软件包将产生exiftool外部进程,这意味着exiftool-vendored.pl和exiftool-vendored.exe软件包应包含在asarUnpack中。 SmartUnpack可能有效,但是如果不使用类似
node_modules/{exiftool-vendored.*}/**/*
的模式。如果您需要在Web视图中使用exiftool供应商,那将是一段糟糕的时光。由于电子内部缺乏节点兼容性,许多事情无法正常工作。
__dirname
在运行时从webpack打包后的asar软件包中无效,因此请不要依赖它。
答案 1 :(得分:0)
由于我从未找到过使exiftool-vendored
与Mac上的电子配合使用的方法,因此我接受了以上答案,从本质上说是为了避免Mac上的电子脱离exiftool-vendored
。
为完整起见,包含了此答案,适用于在Mac和Windows的电子应用中需要exiftool的我们中的人:
我使用node-exiftool并在package.json中为电子生成器添加了以下设置:
"build": {
...
"win": {
...
"extraResources": "exiftoolwin/**/*"
},
"mac": {
...
"extraResources": "exiftool/**/*"
}
}
在项目的根目录中,添加了文件夹exiftoolwin
和exiftool
。在exiftoolwin
中,我将按照Windows Stand-Alone可执行指令here获得的exiftool.exe
放置在exiftool
文件夹中,并将exiftool
和{ {1}}是我通过提取Mac上的完整perl发行版获得的,如同一页所述。
然后,在我的.jsx中(我正在使用React):
lib
然后我按照here的描述使用import exiftool from 'node-exiftool';
const exiftoolFolderAndFile = process.platform === 'win32' ? 'exiftoolwin/exiftool.exe' : 'exiftool/exiftool';
const exiftoolPath = path.resolve(__dirname, '../..', exiftoolFolderAndFile);
const ep = new exiftool.ExiftoolProcess(exiftoolPath);
。