请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

`electron-is-dev` 的问题

  • package.json
  "devDependencies": {
    "electron": "^28.2.1",
    "electron-is-dev": "^3.0.1"
  }
  • main.js
const { app, BrowserWindow } = require('electron');
const isDev = require('electron-is-dev');

let mainWindow;

app.on('ready', () => {
    mainWindow = new BrowserWindow({
        width: 1024,
        height: 680,
        webPreferences: {
            nodeIntegration: true,
        }
    })
    const urlLocation = isDev ? 'http://localhost:3000' : 'dummyurl'
    mainWindow.loadURL(urlLocation);
})

npm run dev 报错内容:

App threw an error during load
ReferenceError: require is not defined in ES module scope, you can use import instead
This file is being treated as an ES module because it has a '.js' file extension and '.../package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.

正在回答

1回答

同学你好

electron-is-dev 刚发新版,已经全部使用 es modules 的写法了,用 import 写法就可以了

请看文档:https://github.com/sindresorhus/electron-is-dev

import isDev from 'electron-is-dev';
if (isDev) {
	console.log('Running in development');
} else {
	console.log('Running in production');
}


0 回复 有任何疑惑可以回复我~
  • 提问者 Makara #1
    好的,方法修改成 `import` 后,并且将文件修改成 `mjs` 后缀,目前暂无问题
    回复 有任何疑惑可以回复我~ 2024-02-07 11:29:31
  • 慕侠7578385 回复 提问者 Makara #2
    回复 Makara:如果你不想改变文件类型成mjs,还是想用require导入的话:可以参考以下代码:
    
    const { app, BrowserWindow } = require('electron');
    
    (async () => {
        const isDev = (await import('electron-is-dev')).default;
    
        function createWindow() {
            const mainWindow = new BrowserWindow({
                width: 800,
                height: 600,
                webPreferences: {
                    nodeIntegration: true
                }
            });
    
            const urlLocation = isDev ? 'http://localhost:3000' : 'dummyurl';
            mainWindow.loadURL(urlLocation);
    
            if (isDev) {
                mainWindow.webContents.openDevTools();
            }
        }
    
        app.whenReady().then(createWindow);
    
        app.on('window-all-closed', () => {
            if (process.platform !== 'darwin') {
                app.quit();
            }
        });
    
        app.on('activate', () => {
            if (BrowserWindow.getAllWindows().length === 0) {
                createWindow();
            }
        });
    })();
    回复 有任何疑惑可以回复我~ 2024-05-30 17:33:31
  • 回复 慕侠7578385:怎么这么复杂,有没有简单点的方法?isDev是怎么判断的?能不能自己写个程序判断?
    回复 有任何疑惑可以回复我~ 2024-10-16 15:01:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信