相关疑难解决方法(0)

如何解决 fs.existsSync 不是函数

在 NodeJS 中,我有:

const fs = require('fs');
if (!fs.existsSync("some_path")) {
...
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

类型错误:fs.existsSync 不是函数

做一些搜索后,我读Webpack给自己带来require哪些则会覆盖node.jsrequire,所以当你需要一个node.js核心模块是webpack无法解析为您的文件或依赖项之一,它抛出。

(我的堆栈跟踪包括__webpack_require__

但是我该如何解决呢?

node.js webpack

17
推荐指数
3
解决办法
4万
查看次数

在 Vue 中使用电子事件时如何修复未定义的 __dirname?

我使用nklayman/vue-cli-plugin-electron-builder创建了一个使用 Vue/Vuex 准备的电子应用程序。它附带文件main.jsbackground.js包括 Vue 组件起点。但我无法让事件发挥作用。我在下面的尝试Uncaught ReferenceError: __dirname is not defined在渲染时产生(编译很好)。

组件:Splash.vue

<template>
    <div @click="open">open</div>      
</template>

<script>

const { ipcMain } = require('electron')

export default {
    methods: {
        open()
        {
            ipcMain.on('my-open-event', (event, arg) => {
                console.log(event, arg)
            })
        }
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

背景.js

import { app, protocol, BrowserWindow } from 'electron'

...

app.on('my-open-event', async () => {
    try {
        "Will call some executable here";
    } catch (e) {
        console.error(e)
    }
})
Run Code Online (Sandbox Code Playgroud)

主文件

import …
Run Code Online (Sandbox Code Playgroud)

vue.js electron vuex

15
推荐指数
1
解决办法
7007
查看次数

当 contextIsolation = true 时,是否可以使用 ipcRenderer?

这是我的设置:

步骤 1. 使用以下代码创建一个 preload.js 文件:

window.ipcRenderer = require('electron').ipcRenderer;
Run Code Online (Sandbox Code Playgroud)

步骤 2. 通过 webPreferences 在 main.js 中预加载此文件:

  mainWindow = new BrowserWindow({
    width: 800, 
    height: 600,
    webPreferences: {
      nodeIntegration: false,
      preload: __dirname + '/preload.js'
    }
  });
Run Code Online (Sandbox Code Playgroud)

步骤 3. 在渲染器中:

console.log(window.ipcRenderer); // Works!
Run Code Online (Sandbox Code Playgroud)

现在按照 Electron 的安全指南,我想转contextIsolation=truehttps : //electronjs.org/docs/tutorial/security#3-enable-context-isolation-for-remote-content

步骤 2 之二。

  mainWindow = new BrowserWindow({
    width: 800, 
    height: 600,
    webPreferences: {
      contextIsolation: true,
      nodeIntegration: false,
      preload: __dirname + '/preload.js'
    }
  });
Run Code Online (Sandbox Code Playgroud)

第 3 步之二。在渲染器中:

console.log(window.ipcRenderer); // undefined

问题:我可以在什么时候使用ipcRenderercontextIsolation=true …

security electron

12
推荐指数
2
解决办法
6782
查看次数

标签 统计

electron ×2

node.js ×1

security ×1

vue.js ×1

vuex ×1

webpack ×1