Electron Builder Linux更新-未定义APPIMAGE env

Electron Builder Linux更新-未定义APPIMAGE env,electron,create-react-app,electron-builder,Electron,Create React App,Electron Builder,我在Electron+Create React应用程序堆栈上。 我正在使用Electron Updater进行自动更新 平台:Linux,格式:AppImage 当我的应用程序检查更新时,出现以下错误: 未定义APPIMAGE env 有人经历过同样的问题吗?需要建议。尝试使用electron builder构建应用程序,因为此模块处于仅维护模式。 linux的自动更新是不可能的,您只能在mac和windows上进行。请阅读此内容。尝试使用electron builder构建您的应用程序,因为此

我在Electron+Create React应用程序堆栈上。 我正在使用Electron Updater进行自动更新

平台:Linux,格式:AppImage

当我的应用程序检查更新时,出现以下错误:

未定义APPIMAGE env


有人经历过同样的问题吗?需要建议。

尝试使用electron builder构建应用程序,因为此模块处于仅维护模式。
linux的自动更新是不可能的,您只能在mac和windows上进行。请阅读此内容。

尝试使用electron builder构建您的应用程序,因为此模块处于仅维护模式。
linux的自动更新是不可能的,你只能在mac和windows上这样做。请阅读此文。

请不要再使用electron updater,因为它的GitHub页面不再支持它。

请不要再使用electron updater,因为它的GitHub页面不再支持它。

大多数情况下,当您试图在开发模式或非打包AppImage模式下使用自动更新程序时,会发生这种情况。它只适用于打包的生产构建

然而,对我来说,这也发生在打包的AppImage中,结果证明是使用网页包造成的,如下所示:

plugins: [
    new webpack.DefinePlugin({
        "process.env": {
            NODE_ENV: JSON.stringify("production")
        },
        ...
process.env.APPIMAGE = path.join(__dirname, 'dist', `MyApp-${app.getVersion()}.AppImage`)
删除process.env定义允许在分布式包中再次定义APPIMAGE。似乎其余的定义可以安全地保留在原位,而不会破坏自动更新程序

如果您的用例无法删除此定义,则可以在主线程(而不是渲染器线程)文件的开头覆盖它,如下所示:

plugins: [
    new webpack.DefinePlugin({
        "process.env": {
            NODE_ENV: JSON.stringify("production")
        },
        ...
process.env.APPIMAGE = path.join(__dirname, 'dist', `MyApp-${app.getVersion()}.AppImage`)
。。。显然,在Path.join的第三个参数中使用了正确的文件名


这种覆盖方法似乎对我没有任何帮助,所以我自己只是简单地从DefinePlugin定义中删除process.env,但在其他情况下可能会有所帮助。

最常见的情况是,当您试图在开发模式或非打包AppImage模式下使用自动更新程序时。它只适用于打包的生产构建

然而,对我来说,这也发生在打包的AppImage中,结果证明是使用网页包造成的,如下所示:

plugins: [
    new webpack.DefinePlugin({
        "process.env": {
            NODE_ENV: JSON.stringify("production")
        },
        ...
process.env.APPIMAGE = path.join(__dirname, 'dist', `MyApp-${app.getVersion()}.AppImage`)
删除process.env定义允许在分布式包中再次定义APPIMAGE。似乎其余的定义可以安全地保留在原位,而不会破坏自动更新程序

如果您的用例无法删除此定义,则可以在主线程(而不是渲染器线程)文件的开头覆盖它,如下所示:

plugins: [
    new webpack.DefinePlugin({
        "process.env": {
            NODE_ENV: JSON.stringify("production")
        },
        ...
process.env.APPIMAGE = path.join(__dirname, 'dist', `MyApp-${app.getVersion()}.AppImage`)
。。。显然,在Path.join的第三个参数中使用了正确的文件名


不过,这种覆盖方法似乎对我没有任何帮助,所以我自己只是从DefinePlugin定义中删除了process.env,但在其他情况下可能会有所帮助。

是否还有其他库用于自动更新Linux平台的electron应用程序?它仍然受支持,只是现在它是electron builder的一部分,正如您引用的github页面上所述:是否有其他库用于自动更新Linux平台的electron应用程序?它仍然受支持,只是现在它是electron builder的一部分,正如您引用的github页面上所述:正如预期的那样,因为从您的代码段中,您正在覆盖值。请参阅说明如下的文档:定义流程值时警告首选“process.env.NODE_env”:JSON.stringify'production”而不是流程:{env:{NODE_env:JSON.stringify'production'}。使用后者将覆盖流程对象,这可能会破坏与某些模块的兼容性,这些模块希望定义流程对象上的其他值。正如预期的那样,因为您正在从代码段覆盖值。请参阅说明如下的文档:定义流程值时警告首选“process.env.NODE_env”:JSON.stringify'production”而不是流程:{env:{NODE_env:JSON.stringify'production'}。使用后者将覆盖流程对象,这可能会破坏与某些模块的兼容性,这些模块希望定义流程对象上的其他值。