Electron封装后不支持ES6

IT技术 javascript node.js reactjs ecmascript-6 electron
2021-05-20 18:21:39

我在基于Electron的应用程序中使用了各种ES6 语法(例如import等)和React代码(JSX在开发过程中,我使用了电子预编译包(作为dev-dependency)来支持这些新功能,并且它工作得很好,没有任何错误。

但是在使用electron-packager打包我的应用程序并运行可分发的应用程序文件后,我遇到了不受支持的 ES6 相关错误,例如:

Unexpected token import

这就是我运行电子打包器命令的方式(注意平台和架构标志):

electron-packager . MyCoolApp --platform=linux --arch=x64

为什么我的应用程序的打包/可分发版本不支持 ES6/React 功能?

2个回答

解决了。

事实证明,在默认情况下,在打包过程中会忽略devDependencies,这意味着electron-prebuild-compile对于打包的应用程序来说,该包是“游戏之外的”,没有它,ES6 就无法进行反编译。因此,为了停用此默认行为,我必须使用该--no-prune标志调用 packager 命令,以便devDependencies将保留而不会被删除:

electron-packager . MyCoolApp --platform=linux --arch=x64 --no-prune

此外,es6-init.js为了在渲染前“编译”代码(它应该用作应用程序的主要入口点脚本),我不得不引入一个新脚本(让我们命名它:)来初始化主应用程序的脚本:

var appRoot = path.join(__dirname, '..');

require('electron-compile').init(appRoot, require.resolve('./main'));

参考:

Nodejs(以及它的 Electron)不支持importexport您将需要使用require();