전자 응용 프로그램에서 node-sqlite3을 사용하려고하는데 응용 프로그램 창에서 다음 오류가 발생합니다. 크롬 콘솔 :전자 렌더러 프로세스에서 sqlite를 사용할 수 없습니다 : "정의되지 않은 '_handle'속성을 읽을 수 없습니다.
이Uncaught TypeError: Cannot read property '_handle' of undefined
at file:///[...]/assets/js/bundle.js:38727:15
at Array.forEach (native)
at module.exports (file:///[...]/assets/js/bundle.js:38726:36)
at Object.<anonymous> (file:///[...]/assets/js/bundle.js:34699:1)
at Object.147._process (file:///[...]/assets/js/bundle.js:34999:4)
at s (file:///[...]/assets/js/bundle.js:1:254)
at file:///[...]/assets/js/bundle.js:1:305
at Object.<anonymous> (file:///[...]/assets/js/bundle.js:32065:11)
at Object.141.../package.json (file:///[...]/assets/js/bundle.js:32246:4)
at s (file:///[...]/assets/js/bundle.js:1:254)
오류가
file:///[...]/assets/js/node_modules/sqlite3/node_modules/set-blocking/index.js
라인 3에서 발생
(이 파일을 자동으로 생성 및 삭제, 내가 그것을 기록하지 않았다는) 다음 내부 const sqlite3 = require('sqlite3')
를 사용하는 경우
module.exports = function (blocking) {
[process.stdout, process.stderr].forEach(function (stream) {
if (stream._handle && stream.isTTY && typeof stream._handle.setBlocking === 'function') {
stream._handle.setBlocking(blocking)
}
})
}
에만 발생 렌더러 프로세스 (예 : React 구성 요소). require('sqlite3')
은 주 전자 프로세스에서 사용될 때 아무런 문제없이 작동합니다 (데이터베이스 호출 작동).
This example app은 렌더러 프로세스에서 sqlite 모듈을 사용할 수 있음을 보여줍니다. 나는 그것이 왜 내 사건에는 효과가 없다는 것을 이해하지 못한다. 내 package.json
:
{
...,
"scripts": {
"postinstall": "install-app-deps",
"start": "electron .",
"watch": "watchify app/app.js -t babelify -o assets/js/bundle.js --debug --verbose",
"watch-style": "sass -r sass-globbing --watch style/application.scss:assets/css/bundle.css"
},
"devDependencies": {
"babel-preset-stage-2": "^6.24.1",
"electron-builder": "^19.49.4"
},
"dependencies": {
"babel": "^6.23.0",
"babel-core": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babelify": "^8.0.0",
"browserify": "^14.5.0",
"electron": "^1.7.10",
"electron-reload": "^1.2.2",
"electron-window-state": "^4.1.1",
"react": "^16.2.0",
"sqlite3": "^3.1.13",
"watchify": "^3.9.0",
...
}
}
내가 사용 : 노드 7.9.0, 크롬 58.0.3029.110, 전자 1.7.10.
github here에 대한 호를 생성했습니다.
관련 : https://stackoverflow.com/questions/43898072/ – vmarquet
관련 : https://stackoverflow.com/questions/38997260/ – vmarquet
당신이 browserify 통해 렌더러 측 코드를 묶는 것처럼 보이는 올바른 것입니다? –