๐ข ํ๊ฒฝ
Node: v16.15.0
Quasar: v2.7.5
electron: v18.3.5
node-jdbc: v0.7.6
๐จ ๋ฌธ์
Quasar + Electron ํ๊ฒฝ์์ node-jdbc ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ install ๋ฐ import ํ์
์คํ ๋ฐ ๋น๋๊ฐ ๋์ง ์๋ ๋ฌธ์ ๋ฐ์.
์ด ๋ฌธ์ ๋ Electron ํ๊ฒฝ์ node-java ๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ์ ๋๋ ๋๊ฐ์ด ๋ฐ์ํ ๊ฒ์ด๋ค.
์๋์์ ์ค๋ช ํ ๋ฌธ์ ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๋ก ์ฐ๊ณ๋๊ณ ์์ผ๋ ์ฐธ๊ณ .
๐จ ์๋ฌ ์ฝ๋
...๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก
was compiled against a different Node.js version using
NODE_MODULE_VERSION 93. This version of Node.js requires
NODE_MODULE_VERSION 103. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
๐จ ํด๊ฒฐ ๋ฐฉ๋ฒ
https://stackoverflow.com/a/52796884/20975122
Node - was compiled against a different Node.js version using NODE_MODULE_VERSION 51
I am running a node application on terminal. Have recently upgraded to node v8.5.0, but am getting this error: Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/b...
stackoverflow.com
์ stackoverflow ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ๋ค.
electron rebuild ๋ฅผ ํด์ฃผ๋ผ๊ณ ๋์ด ์๋ค.
electron rebuild ๋ Electron ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ๋ช
๋ น์ด์ด๋ค.
Electron ์ V8 ์์ง์ ์ฌ์ฉํ๋ค.
๋ฒ์ ์ด ๋ฌ๋ผ V8 ์์ง๊ณผ ๋
ธ๋ ๋ชจ๋์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ,
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
electron-rebuild ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
$ npm i -D electron-rebuild
node_modules ์ญ์
$ rm -rf node_modules
package-lock.json ์ญ์
$ rm package-lock.json
npm ์บ์ ์ญ์
$ npm cache clean --force
npm ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
$ npm i
electron rebuild
$ ./node_modules/.bin/electron-rebuild
๐จ ์๋ฌ ์ฝ๋
electron rebuild ์ค ์๋์ ๊ฐ์ ์๋ฌ ์ฝ๋๊ฐ ๋ฐ์ํ๋ค.
โ Building module: java, Completed: 0utils.obj : error LNK2019: "__declspec(dllimport) public: class std::shared_ptr<class v8::BackingStore> __cdecl v8::ArrayBuffer::GetBackingStore(void)" (__imp_?GetBacking gStore@ArrayBuffer@v8@@QEAA?AV?$shared_ptr@VBackingStor
e@v8@@@std@@XZ) ์ธ๋ถ ๊ธฐํธ(์ฐธ์กฐ ์์น: "class v8::Local<class v8::ArrayBuffer> __cdecl newArrayBuffer(void *,unsigned __int64)" (?newArrayBuffer@@YA?AV?$Local@VArrayBuffer@v8@@@v8@@PEAX_K@Z) ํจ์)์์ ํ์ธํ์ง ๋ชปํ์ต๋๋ค.
๐จ ํด๊ฒฐ ๋ฐฉ๋ฒ
https://github.com/joeferner/node-java/pull/532/files
Fixes utils.cpp to support electron by lygstate · Pull Request #532 · joeferner/node-java
github.com
์ node-java ์ด์๋ฅผ ์ฐธ๊ณ ํ๋ค.
node_modules\java\src\utils.cpp
์ ์ฝ๋๊ฐ ๊ธฐ์กด์ ์๋์ ๊ฐ์ด ๋์ด ์์๋ค.
#if NODE_VERSION_AT_LEAST(13, 0, 0)
v8::Local<v8::ArrayBuffer> newArrayBuffer(void* elems, size_t length) {
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length);
memcpy(ab->GetBackingStore()->Data(), elems, length);
return ab;
}
#elif NODE_VERSION_AT_LEAST(4, 0, 0)
v8::Local<v8::ArrayBuffer> newArrayBuffer(void* elems, size_t length) {
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(v8::Isolate::GetCurrent(), length);
memcpy(ab->GetContents().Data(), elems, length);
return ab;
}
#endif
๋์ถฉ ๋
ธ๋ ๋ฒ์ ๋ณ๋ก ์ด๋ค ๋์์ ํ ์ง ์ ์๋์ด ์๋ ์ฝ๋์ธ๋ฐ,
์ฌ๊ธฐ์ ์ฌ์ฉ๋ ๋ฉ์๋๋ค์ ํธํ ๋ฌธ์ ๋๋ฌธ์ rebuild ๊ฐ ๋์ง ์๋ ๊ฒ์ด๋ค.
์ ์ง๋ณด์ ๋๊ณ ์์ง ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ง์ ์์ ํด์ค์ผํ๋ค. ๐คฆโ๏ธ
์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์์ ํด์ฃผ์.
#if NODE_VERSION_AT_LEAST(4, 0, 0)
v8::Local<v8::ArrayBuffer> newArrayBuffer(void* elems, size_t length) {
Nan::MaybeLocal<v8::Object> buf = Nan::NewBuffer((char*)elems, length);
v8::Local<v8::Object> v8Buf = buf.ToLocalChecked();
Nan::MaybeLocal<v8::Value> ab = Nan::Get(v8Buf, Nan::New<v8::String>("cause").ToLocalChecked());
return ab.ToLocalChecked().As<v8::ArrayBuffer>();
}
#endif
์์ ํ ๋ค์ electron rebuild ํด ๋ณด๋ฉด ์๋๋ ๊ฑธ ์ ์ ์๋ค.
ํ์ง๋ง, node_modules ์ ์ฝ๋๋ฅผ ์ง์ ์์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, npm install
์ ๋ค์ ์์๋ณต๊ท๋์ด ๋ฒ๋ฆฐ๋ค.
์๊ตฌ์ ์ผ๋ก ํด๋น ์ฝ๋๋ฅผ ํ๋ก์ ํธ์ ์ ์ฉํด์ผํ๋ค.
๐จ ๋ฌธ์
์์ ํ node_modules ๊ฐ ์์๋ณต๊ท๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด patch-package
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ ค๊ณ ํ์ผ๋,patch-package
์ฌ์ฉ ํ ๋น๋ ์ ์์ ๋ ์ฝ๋๊ฐ ์ ๋๋ก ๋ฎ์ด์์์ง์ง(patch) ์๋ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ค.
์ด์ ๋ ์ถ์ธกํ๊ฑด๋ฐ, node-java
๊ฐ node-jdbc
ํ์์ ์ฃผ์
๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ
patch-package ๊ฐ ์ ๋๋ก ์ ์ฉ์ด ์๋๋ ๊ฒ ๊ฐ๋ค.
๐จ ํด๊ฒฐ ๋ฐฉ๋ฒ
node-java
์ฝ๋๋ฅผ fork ํด ์จ ๋ค, node_modules ๋ฅผ ์ง์ ์์ ํ๋ ๊ฒ์ฒ๋ผ ์์ ํด์
commit, push ํ๋ค.
forkํด์จ repository ์ฃผ์๋ฅผ package.json
์ ๋ฒ์ ๋์ ์ ์ํด์ฃผ๋ฉด ๋๋๋ฐ,node-jdbc
ํ์์ node-java
์ ๋ฒ์ ์ ์์ ํด์ผํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์package.json
์ overrides
์์ฑ์ ์ฌ์ฉํด ์ ์ํด์ฃผ๋ฉด ๋๋ค.
"dependencies": {
"jdbc": "0.7.6"
// ...
},
"overrides": {
"jdbc": {
"java": "https://github.com/doozi316/node-java.git"
}
},
๐จ ์๋ฌ ์ฝ๋
์์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋๋ก ์ฃผ์
ํ๊ธด ํ๋,
run ๋๋ build ์, ์๋์ ๊ฐ์ ์๋ฌ ์ฝ๋๊ฐ ๋ฐ์ํ๋ค.
Node JS error: Cannot find module '../build/jvm_dll_path.json'
๐จ ํด๊ฒฐ ๋ฐฉ๋ฒ
https://stackoverflow.com/a/63922730/20975122
Node JS error: Cannot find module '../build/jvm_dll_path.json'
I am receiving the following error after running npm start: Error: Cannot find module '../build/jvm_dll_path.json' at Function.Module._resolveFilename (module.js:555:15) at Function.Module._load (...
stackoverflow.com
์ stackoverflow ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๋ค.
์์ธ์, ํจํค์ง install ํ postInstall, ์ฆ, install ์ดํ์ ์ด๋ค ๊ธฐ๋ฅ์ด ๋์ํด์ผํ๋๋ฐ,
ํด๋น ๊ธฐ๋ฅ์ด ๋์๋์ง ์์ ๋ฐ์ํ ๋ฌธ์ ์ด๋ค. (์ด์ ๋ ๋ชจ๋ฅด๊ฒ ์. ์ ์ด์ ์๋ ์คํ ๊ตฌํ์ด ์๋์ด ์๋๊ฑธ์ง๋...)
install ์ดํ์ ๋์ํด์ผํ ๊ธฐ๋ฅ์node-java/postInstall.js
์ ๊ตฌํ๋์ด ์๋ค.
์ด ํ์ผ์ ์๋ ์คํ์์ผ์ฃผ๋ฉด ๋๋ค.
$ cd node_modules/java
$ node postInstall.js
๐จ ๋ฌธ์
์ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ํํ ํ์, ๋์ ๋๋ ์๋ฌ๋ ์์์ง๋งquasar.esm.js not found (404)
์๋ฌ๊ฐ ๋จ๋ฉฐ run ์ด ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๐จ ํด๊ฒฐ ๋ฐฉ๋ฒ
์๋ ๋ฐฉ๋ฒ ์คํ ํ ํด๊ฒฐ ๋๋ค.
๋ญ๊ฐ ์ด๊ฒ์ ๊ฒ ์ค์นํ๊ณ ๋ฆฌ๋น๋๋ฅผ ์์ฃผํด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ๋ค.
์๋ ๋ฐฉ๋ฒ ์คํ ์ ์, ํ๋ก์ ํธ๋ฅผ ํต์งธ๋ก ์ง์ฐ๊ณ ๋ค์ clone ํด์จ ๋ค ์คํ์์ผฐ๋๋ฐ,
๊ทธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์คํ ๋ฐ ๋น๋๊ฐ ๋๋ค.
node_modules ์ญ์
$ rm -rf node_modules
package-lock.json ์ญ์
$ rm package-lock.json
npm ์บ์ ์ญ์
$ npm cache clean --force
npm ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
$ npm i