我正在使用 Electron ,我想有条件地使用cookie。如果它是 Electron 应用程序,则使用Electron Cookies,否则请使用 Angular cookie。我在我的 Angular Electron 应用程序中声明cookie时遇到问题。
根据Electron's Cookie Document,我们需要使用require
声明它,但我想在.ts
文件中使用它
到目前为止,我已经尝试过const { session } = require('electron');
declare function require(name:string);
const { session } = require('electron');
import * from 'electron';
import * as session from 'electron';
所有方法在编译或停止脚本以在运行时执行时都会产生错误。
任何人都可以帮助我,并指导我如何在我的项目中使用Electron-cookie。
最佳答案
您需要像这样的网络偏好设置
webPreferences: {
nodeIntegration: true,
webSecurity: true,
allowEval: false,
allowRunningInsecureContent: false,
contextIsolation: true, // protect against prototype pollution
enableRemoteModule: true, // turn off remote
preload: path.join(__dirname, "preload.js") // use a preload script
},
nodeIntegration和enableRemoteModulke非常重要。并在您的preload.js中创建一个窗口函数
contextBridge.exposeInMainWorld(
'session',
{
set: (cookie) => {
remote.session.defaultSession.cookies.set(cookie).then(() => {
console.log('Cookie Saved')
}, (error) => {
console.error(error)
})
},
// Returns Promise<Cookie[]>
get: () => {
return remote.session.defaultSession.cookies.get({}).then((cookies) => {
console.log(cookies);
return cookies
}).catch((error) => {
console.log(error)
})
},
}
)
最后在你的angular2 +项目中执行这样的功能window['session'].get({}) || window['session'].set(cookie);
关于javascript - 如何在 Angular 使用 Electron cookies ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59420147/