Creator工程里的代码,应该如何与electron交互?

如题,
我希望点击场景中的一个按钮,打开electron的dialog,读取一份文件
于是,我写了以下一个Ele_ShowFileDialog.js,如下:


Ele_ShowFileDialog.js 这个模块,直接在网页上测试是能用的,

然后,
我把工程发布为:web-mobile,并将整个文件夹放入electron文件中
我在electron的主进程里,直接加载web-moblie下的index页面(也就是creator发布出来的)
npm start运行electron
当用户点击场景中的一个按钮,我调用: eleFileDialog.showFileDialog_Load();
但是
这时候报错说:can not find moudle electron

根据报错,应该是require不到electron导致的
于是
把Ele_ShowFileDialog直接添加到index.html上面,
然后工程代码里通过window对象获取Ele_ShowFileDialog模块
确实,可以用了
但是这种方法很恶心,每次发布出来还要修改html页面

我想知道有没有其他方法可以直接调用electron模块的?

@xu_yanfeng
求大佬指点,谢谢。

你要反过来, 不是cocos去调用electron, 而是electron的页面去嵌入cocos游戏, 不要使用官方发布的那个index.html



<canvas id="GameCanvas" ></canvas>

  
<script src="src/settings.js" charset="utf-8"></script>
<script src="main.js" charset="utf-8"></script>

<script type="text/javascript">

(function () {
    // open web debugger console
    if (typeof VConsole !== 'undefined') {
        window.vConsole = new VConsole();
    }

    var splash = document.getElementById('splash');
    splash.style.display = 'block';

    var cocos2d = document.createElement('script');
    cocos2d.async = true;
    cocos2d.src = window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.js';

    var engineLoaded = function () {
        document.body.removeChild(cocos2d);
        cocos2d.removeEventListener('load', engineLoaded, false);
        window.boot();
    };
    cocos2d.addEventListener('load', engineLoaded, false);
    document.body.appendChild(cocos2d);
})();
</script>



把这个electron的html命名为比如electron.html, 跟cocos 发布的index.html 保持放在同个目录即可

2赞

谢谢。

这步是咋做到的

修改build出来的html,最好使用模板。


放在html里 还是报require is not defined难道是我理解的不对吗

呃,简单的这样处理是不行的。

首先,由于creator编辑器本身就是electron(大概好像)
所以你确实直接新增一个js模块来require electron
但是就如我在本帖所问的问题一样,一旦发布反而用不了啦。

如果你要直接在页面上require(‘electron’)的话,
你的工程必须运行electron环境下。
参考:
https://www.electronjs.org/
https://www.electronjs.org/zh/docs/latest/tutorial/quick-start
对于刚开始使用electron的用户来说
1、先把你的electron工程跑起来
2、然后你的cocos creator的工程build出来
3、把build出来的东西拷贝到你electron的对应目录下(什么是对应目录,参阅上面两条参考链接)
4、然后你运行electron , 你的cocos项目就可以正确 require electron 了

上面这个流程显然很麻烦,每次都复制粘贴。
所以当熟悉了之后,
我们应当使用发布模板、编译工具等等来自动处理

找到原因了
electron窗口初始化时 需要加这三个参数
image

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。