繁体   English   中英

Electron主js脚本中如何调用Webpack绑定的function

[英]How to call function bundled by Webpack in Electron main js script

我正在尝试从我的(webpack'ed)包中访问 function,但是 function 是未定义的。 (整个 object 为空)(在 electron-main.js 中参见appBundle.test()

我找遍了web,都没有找到我要找的答案。 尝试了所有不同的 libraryTarget 选项,但没有一个按我预期的方式工作。

这是源代码:

webpack.dev.js:

 ... module.exports = Merge(CommonConfig, { devtool: "inline-source-map", watch: true, entry: path.resolve(__dirname, "src/index.ts"), output: { filename: "bundle.js", path: __dirname + "/wwwroot/resources/js/components", publicPath: "/resources/js/components/", library: "appBundle", libraryTarget: "commonjs2" }, plugins: ([ new webpack.DefinePlugin({ "process.env": { "NODE_ENV": JSON.stringify("development") } }), // Etract CSS new MiniCssExtractPlugin({ filename: '[name].css', chunkFilename: '[id].css', }), ]), })

指数.ts:

 import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable'; // Styling import './application-styling.scss'; // Application import "./application/index.tsx"; export default function test() { console.log('hello'); }

电子-main.js:

 const { BrowserWindow } = require('electron'); const createAppWindow = require('../main/app-process'); const authService = require('../services/auth-service'); global.window = {}; // <- Need to define this manually, else the require call throws errors const appBundle = require('app-bundle'); // Trying to import the bundle.js here let win = null; function createAuthWindow() { destroyAuthWin(); win = new BrowserWindow({ width: 1000, height: 600, webPreferences: { nodeIntegration: false, enableRemoteModule: false } }); win.loadURL(authService.getAuthenticationURL()); const { session: { webRequest } } = win.webContents; const filter = { urls: [ 'http://localhost/callback*' ] }; webRequest.onBeforeRequest(filter, async ({ url }) => { console.log(appBundle); // <- undefined or empty object, depending on libraryTarget console.log(appBundle.test()); // <- error, test is undefined await authService.loadTokens(url); createAppWindow(); return destroyAuthWin(); }); ... }...

显然是import "./application/index.tsx"; 调用以某种方式搞砸了出口。 当我只使用一个干净的文件作为入口点时,它工作正常。

无论如何,我最终只是将 electron 项目与应用程序包一起构建为一个 package。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM