未定义从渲染过程中要求电子对话

新手上路,请多包涵

我正在使用电子并试图在用户单击按钮时打开文件浏览器。在渲染过程中,我试图像这样包含 elctron.dialog 包。

 const dialog = require( 'electron' ).dialog;

console.log( dialog );

然而控制台日志的结果是 undefined

我绝对确定我在渲染过程中,所以我不确定为什么这不起作用。文档表明这是正确的做事方式,但它似乎不起作用。

这是我的 package.json 文件

{
  "name": "my-app",
  "version": "0.1.0",
  "main": "./main.js",
  "scripts": {
    "start": "electron ."
  },
  "dependencies": {
    "electron": "^0.4.1"
  }
}

这是我的 main.js 文件

    'use strict';

    var app = require( 'app' );
    var BrowserWindow = require( 'browser-window' );
    var ipc = require( 'ipc' );

    var mainWindow = null;

    app.on(
        'ready', function () {
            mainWindow = new BrowserWindow(
                {
                    frame : true,
                    height: 700,
                    width : 500
                }
            );

            mainWindow.loadUrl( 'file://' + __dirname + '/app/index.html' );

            mainWindow.openDevTools();
            mainWindow.on(
                'closed', function () {
                    mainWindow = null;
                }
            );

        }
    );

    ipc.on(
        'close-main-window', function () {
            app.quit();
        }
    );

这是渲染的过程文件

    // Add your index.js code in this file
    var ipc = require( 'ipc' );

    const dialog = require( 'electron' ).dialog;

    console.log( dialog );

这是控制台

这是不正确的吗?

原文由 Subtubes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 208
2 个回答

经过几个小时的调查后, 有人 向我指出执行此操作的“新”方式 (4/15/16) 如下。

 var remote = require('remote');
var dialog = remote.require('dialog');

dialog.showOpenDialog({
  properties: [ 'openFile' ] }, function ( filename ) {
    console.log( filename.toString() );
  }
);

您必须要求 remote 然后从远程要求对话框。看起来你不再需要 require electron

原文由 Subtubes 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Renderer 进程上,必须使用 Remote 模块。

 const dialog = require('electron').remote.dialog

更多信息:

电子对话 API

电子远程 API

原文由 Philip 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题