#javascript #import #electron
#javascript #импорт #electron
Вопрос:
У меня есть файл index.ts
:
import { app, BrowserWindow } from 'electron'
let win
app.on('ready', () => {
win = new BrowserWindow({
minHeight: 640,
minWidth: 480,
frame:false
})
win.loadFile('index.html')
})
Если я попытаюсь запустить с помощью: npm start
, я получу сообщение об ошибке:
import { app, BrowserWindow } from 'electron'
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1051:16)
at Module._compile (internal/modules/cjs/loader.js:1101:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1166:10)
at Module.load (internal/modules/cjs/loader.js:981:32)
at Module._load (internal/modules/cjs/loader.js:881:14)
at Function.Module._load (electron/js2c/asar.js:769:28)
at loadApplicationPackage (D:VS ProjectsElectron Appnode_moduleselectrondistresourcesdefault_app.asarmain.js:109:16)
at Object.<anonymous> (D:VS ProjectsElectron Appnode_moduleselectrondistresourcesdefault_app.asarmain.js:155:9)
at Module._compile (internal/modules/cjs/loader.js:1145:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1166:10)
Мой package.json
:
{
"name": "electron-app",
"version": "1.0.0",
"description": "",
"main": "index.ts",
"dependencies": {
"electron": "^10.1.2"
},
"devDependencies": {},
"scripts": {
"start": "electron .",
"test": "echo "Error: no test specified" amp;amp; exit 1"
},
"author": "",
"license": "ISC",
"type": "module"
}
Как я могу это решить?
Комментарии:
1. Electron не будет работать с инструкциями импорта. Он использует среду на основе Nodejs, которая не поддерживает этот синтаксис. Вместо этого вы должны использовать require.
2. Смотрите страницу Начало работы для electron
3. О, извините, я допустил ошибку! Это не JS, я использую Typescript с electron.
4. И что это за дополнительная настройка?
5. Ладно, это хоть что-то… Спасибо, @Chris! Вы можете сделать это в качестве ответа
Ответ №1:
Похоже, вы пытаетесь использовать TypeScript с Electron. У Electron есть доступные типы, однако он напрямую не поддерживает выполнение TypeScript прямо из коробки. Вам нужно будет выполнить некоторые дополнительные шаги, чтобы все заработало. Это немного выходит за рамки ответа и должно быть скорее учебным пособием или примером, поэтому я приведу вам пример из GitHub.
Вы можете просмотреть пример начала работы с TypeScript и Electron здесь .
Ответ №2:
Electron проходит через node.js и node.js отстает и использует синтаксис импорта commonjs.
Для импорта мы делаем:
const {app} = require("electron");
// equivalent to
//import {app} from 'electron' <- don't use in electron
для экспорта мы делаем:
module.exports = app;
// equivalent to
//export default app; <- don't use in electron