javascript 无法在我的preload.js中使用模块“dotenv”,即使我的依赖项中有它

htrmnn0y  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(187)

我刚开始用Electron。
这是我的preload.js的开始:

const { contextBridge } = require('electron');
require('dotenv').config();
// ...

当我使用npm start时,应用程序启动正常,只是preload.js没有做任何事情。我打开开发者工具,看到以下错误:

Error: module not found: dotenv
    at preloadRequire (...)
...

然后我检查了我的npm-shrinkwrap.json

"devDependencies": {
    // ...
    "dotenv": "^16.0.3",
    "electron": "^22.1.0"
}

嗯,它确实有dotenv
那么,如何才能使preload.js能够使用dotenv呢?

b1payxdu

b1payxdu1#

多亏了Alexander Leithner,我解决了这个问题。
documentation中,它说“沙箱”限制了我可以从preload.js“要求”什么;因此要禁用它,请在BrowserWindow选项的webPreferences中设置sandbox: falsenodeIntegration: true

示例

app.whenReady().then(() => {
  const win = new BrowserWindow({
    webPreferences: {
      nodeIntegration: true
    }
  })
  win.loadURL('https://google.com')
})

相关问题