๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ข ํ™˜๊ฒฝ

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

 

Seize the day!

Spring MVC | Spring Boot | Spring Security | Mysql | Oracle | PostgreSQL | Vue.js | Nuxt.js | React.js | TypeScript | JSP | Frontend | Backend | Full Stack | ์ž๊ธฐ๊ณ„๋ฐœ | ๋ฏธ๋ผํด ๋ชจ๋‹ | ์ผ์ƒ