References
https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/776
https://qdmana.com/2022/04/202204101637436275.html
에러 발생 내역
(node:14468) ExtensionLoadWarning: Warnings loading extension at [ 일렉트론 Devtool이 적용되는 로컬 경로 ]\\[ ID 값 ]:
Unrecognized manifest key 'browser_action'.
Unrecognized manifest keyoad extension with file 'update_url'.
Cannot load extension with file or directory name *metadata.*
*Filenames starting with "_*" are reserved for use by the system.
(node:14468) UnhandledPromiseRejectionWarning: Error: ERR_FAILED (-2) loading '[<http://localhost:8080/>](<http://localhost:8080/>)' at rejectAndCleanup (electron/js2c/browser_init.js:225:1288) at WebContents.stopLoadingListener (electron/js2c/browser_init.js:225:1673) at WebContents.emit (events.js:228:7)
(node:14468) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:14468) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated.
In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
에러가 발생된 타임라인
- 기존에 있던 소스코드를 pull
- npm 모듈을 설치(npm install)
- 로컬 환경에서 electron 개발 환경을 구동(npm run electron:serve)
- 에러발생…
개발 환경
- node.js : 14.17.8
- npm : 6.14.15
- electron : 9.0.0
- vue.js : 3.0.0
해결 시도.1 (실패)
환경 설정 도중 문제가 발생할 가능성이 있으니 기존 소스코드를 지우고 다시 git에서 pull을 받아 진행한다.
해결 시도.2 (실패)
background.js에서 installExtension 인자 값의 id와 electron 버전을 직접 지정한다.
await installExtension({
id: '[ ID 값 ]',
electron: '[ 일렉트론 버전 ]'
})
해결 시도.3 (실패)
background.js에서 installExtension 인자 값의 id와 loadExtensionOption을 직접 지정한다.
await installExtension('[ ID 값 ]', {
loadExtensionOptions: {
allowFileAccess: true,
},
});
해결 시도.4 (실패)
background.js에서 electron-devtools-installer 가 호출되는 VUEJS_DEVTOOLS 를 VUEJS3_DEVTOOLS로 변경한다.
import installExtension, { VUEJS3_DEVTOOLS } from "electron-devtools-installer";
... (아래의 installExtension에서도 VUEJS3_DEVTOOLS 변경 적용)
해결 시도.5 (실패)
package-lock.json 파일에서 변경사항을 방지하기 위해 기존 node_modules 파일을 지우고 다음과 같은 명령어를 통해 다시 인스톨해서 실행한다.
npm ci
... (설치 후 package-lock.json 파일에 변경사항이 없는 것을 확인)
npm run electron:serve
해결 시도.6 (실패)
extension 경로가 지정되어 있는 id 프로젝트에서 manifest.json 파일 내 update_url 와 browser_action 구문을 지우고 다시 실행한다.
{
// ------------- 삭제.1 ------------- //
"update_url": "<https://clients2.google.com/service/update2/crx>",
// -------------------------------- //
... (중략) ...
// ------------- 삭제.2 ------------- //
"browser_action": {
"default_icon": {
"16": "icons/16-gray.png",
"48": "icons/48-gray.png",
"128": "icons/128-gray.png"
},
"default_title": "Vue Devtools",
"default_popup": "popups/not-found.html"
},
// -------------------------------- //
... (후략) ...
}
해결 시도.7 (실패)
Chrome 확장 프로그램 중 Vue Devtools 를 재설치한다.
해결 시도.8 (성공)
Windows 포맷을 한 다음 다시 재설치 후 진행한다.
문제 발생 원인
내부 보안 처리와 여러 복합적인 문제로 해당 electron 프로젝트를 구동하는 설정 파일이나 값이 변조가 된거 같다.
추후 비슷한 일이 다시 생길때 관련 항목으로 접근하여 조치를 하면 될 거 같다.
'Self-Study > 계란으로 바위치기' 카테고리의 다른 글
[Git] sourcetree master branch로 merge하기 (0) | 2022.07.05 |
---|---|
[Electron] 클라이언트 닫기가 안될 때 (0) | 2022.07.04 |
[Spring] AuthenticationPrincipal로 인증된 페이지의 통합테스트 진행 (0) | 2021.04.20 |
인증이 필요한 페이지를 상대로 통합 테스트 진행하기 (0) | 2021.04.19 |
[Spring] 상품 찜하기 기능 (0) | 2021.04.16 |
최근댓글