问:
Sync Meteor project between to macs using icloud
I am trying to create a personal meteor JS project and use icloud to sync between my multiple apple computers, so i dont have to use git to manage between the devices. I want to avoid node_modules folder getting sync'd into iCloud for storage limit reasons.

As suggested in other forums i have tried

```<code>mv node_modules node_modules.nosync
</code>```

and

```<code>ln -s node_modules.nosync node_modules
</code>```

then ran the meteor run to get the project running
i dont see any errors in the terminal but the browser console is going off with the following errors

```<code>modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367 Uncaught ReferenceError: ___INIT_METEOR_FAST_REFRESH is not defined
    at modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367:3
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27406:3)
    at fileEvaluate (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388:7)
    at Module.require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270:27)
    at require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310:21)
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:245:3)
    at fileEvaluate (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388:7)
    at Module.require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270:27)
    at require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310:21)
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:29:1)
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27406
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:245
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:29
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27897
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27904
promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17:37
    at promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:164:3
(anonymous) @ promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17
(anonymous) @ promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:164
ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17:37
    at ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:2177:3
(anonymous) @ ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17
(anonymous) @ ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:2177
hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14:37
    at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:666:3
(anonymous) @ hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14
(anonymous) @ hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:666
react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17:37
    at react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:982:3
(anonymous) @ react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17
(anonymous) @ react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:982
fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17:37
    at fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:52:3
(anonymous) @ fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17
(anonymous) @ fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:52
dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17:37
    at dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:573:3
(anonymous) @ dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17
(anonymous) @ dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:573
base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17:37
    at base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:184:3
(anonymous) @ base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17
(anonymous) @ base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:184
ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Base64')
    at ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17:29
    at ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:840:3
(anonymous) @ ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17
(anonymous) @ ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:840
diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17:27
    at diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:300:3
(anonymous) @ diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17
(anonymous) @ diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:300
geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17:37
    at geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:439:3
(anonymous) @ geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17
(anonymous) @ geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:439
id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17:27
    at id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:119:3
(anonymous) @ id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17
(anonymous) @ id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:119
random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17:37
    at random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:400:3
(anonymous) @ random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17
(anonymous) @ random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:400
mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17:27
    at mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:150:3
(anonymous) @ mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17
(anonymous) @ mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:150
ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17:37
    at ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:242:3
(anonymous) @ ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17
(anonymous) @ ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:242
tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17:37
    at tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:632:3
(anonymous) @ tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17
(anonymous) @ tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:632
minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17 Uncaught TypeError: Cannot read properties of undefined (reading 'DiffSequence')
    at minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17:45
    at minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:4260:3
(anonymous) @ minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17
(anonymous) @ minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:4260
check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17:27
    at check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:572:3
(anonymous) @ check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17
(anonymous) @ check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:572
retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Random')
    at retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17:29
    at retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:101:3
(anonymous) @ retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17
(anonymous) @ retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:101
callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17:37
    at callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:188:3
(anonymous) @ callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17
(anonymous) @ callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:188
ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'check')
    at ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17:27
    at ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:475:3
(anonymous) @ ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17
(anonymous) @ ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:475
reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17:37
    at reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:313:3
(anonymous) @ reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17
(anonymous) @ reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:313
socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Retry')
    at socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17:27
    at socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:2852:3
(anonymous) @ socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17
(anonymous) @ socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:2852
ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17 Uncaught TypeError: Cannot read properties of undefined (reading 'check')
    at ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17:27
    at ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:2170:3
(anonymous) @ ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17
(anonymous) @ ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:2170
ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14 Uncaught TypeError: Cannot read properties of undefined (reading 'DDP')
    at ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14:33
    at ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:23:3
(anonymous) @ ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14
(anonymous) @ ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:23
allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17 Uncaught TypeError: Cannot read properties of undefined (reading 'LocalCollection')
    at allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17:41
    at allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:535:3
(anonymous) @ allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17
(anonymous) @ allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:535
logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17:27
    at logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:354:3
(anonymous) @ logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17
(anonymous) @ logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:354
mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17 Uncaught TypeError: Cannot read properties of undefined (reading 'AllowDeny')
    at mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17:39
    at mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:967:3
(anonymous) @ mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17
(anonymous) @ mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:967
reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17:31
    at reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:138:3
(anonymous) @ reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17
(anonymous) @ reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:138
react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17:31
    at react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:577:3
(anonymous) @ react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17
(anonymous) @ react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:577
webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17:37
    at webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:64:3
(anonymous) @ webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17
(anonymous) @ webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:64
autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17:31
    at autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:325:3
(anonymous) @ autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17
(anonymous) @ autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:325
global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3 Uncaught TypeError: Cannot read properties of undefined (reading 'Mongo')
    at global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3:23
(anonymous) @ global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3
app.js?hash=0b6a6e3ab9b295f20a4b2f9d69be2c620879afc8:1 Uncaught ReferenceError: meteorInstall is not defined
    at app.js?hash=0b6a6e3ab9b295f20a4b2f9d69be2c620879afc8:1:15```
```

How do i fix this and successfully run my meteor project across multiple macs

Body:
I am trying to create a personal meteor JS project and use icloud to sync between my multiple apple computers, so i dont have to use git to manage between the devices. I want to avoid node_modules folder getting sync'd into iCloud for storage limit reasons.

As suggested in other forums i have tried

mv node_modules node_modules.nosync

and

ln -s node_modules.nosync node_modules

then ran the meteor run to get the project running
i dont see any errors in the terminal but the browser console is going off with the following errors

modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367 Uncaught ReferenceError: ___INIT_METEOR_FAST_REFRESH is not defined
    at modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367:3
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27406:3)
    at fileEvaluate (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388:7)
    at Module.require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270:27)
    at require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310:21)
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:245:3)
    at fileEvaluate (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388:7)
    at Module.require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270:27)
    at require (modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310:21)
    at module (modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:29:1)
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27367
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27406
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:245
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
module @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:29
fileEvaluate @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:388
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:270
require @ modules-runtime-hot.js?hash=325e29e1f9abcee55f3cef85ec8a56670bbc6194:310
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27897
(anonymous) @ modules.js?hash=eef2c3bbc35ca3dd39638f4bb1a9d1d0263954a9:27904
promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17:37
    at promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:164:3
(anonymous) @ promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:17
(anonymous) @ promise.js?hash=38bc27faf4ef2e5481595b5a1055b0b3246bda7e:164
ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17:37
    at ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:2177:3
(anonymous) @ ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:17
(anonymous) @ ecmascript-runtime-client.js?hash=728e0f7f1495fe69c3af1d7a9f5a5829f4f62674:2177
hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14:37
    at hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:666:3
(anonymous) @ hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:14
(anonymous) @ hot-module-replacement.js?hash=8bbefadb77097ac852d6d5dd3db9f23e39ee3511:666
react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17:37
    at react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:982:3
(anonymous) @ react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:17
(anonymous) @ react-fast-refresh.js?hash=2d2cfb538903e27f542f73469113bb56a27e2a7e:982
fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17:37
    at fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:52:3
(anonymous) @ fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:17
(anonymous) @ fetch.js?hash=0b9fdd2f5e9d2d8b0f9d52621e86d2fdcf0b4140:52
dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17:37
    at dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:573:3
(anonymous) @ dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:17
(anonymous) @ dynamic-import.js?hash=1630a21f8c1606b75827ba612847face956d281b:573
base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17:37
    at base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:184:3
(anonymous) @ base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:17
(anonymous) @ base64.js?hash=98021fbe5be698d31a383cf6d245dc69f399852c:184
ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Base64')
    at ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17:29
    at ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:840:3
(anonymous) @ ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:17
(anonymous) @ ejson.js?hash=58c56b51844a69e71c05a0a1bd2fb260ce79b1dd:840
diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17:27
    at diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:300:3
(anonymous) @ diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:17
(anonymous) @ diff-sequence.js?hash=77648032cef8b5a4c1ad9bf794a1768831caf694:300
geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17:37
    at geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:439:3
(anonymous) @ geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:17
(anonymous) @ geojson-utils.js?hash=574576455f62f44cc91645f1ffa25291c5570d40:439
id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17:27
    at id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:119:3
(anonymous) @ id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:17
(anonymous) @ id-map.js?hash=0f173b4268a913db9ef76530e2f31ed26f231131:119
random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17:37
    at random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:400:3
(anonymous) @ random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:17
(anonymous) @ random.js?hash=5d386544e57317c1618a79e225c04ed74e367fb7:400
mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17:27
    at mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:150:3
(anonymous) @ mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:17
(anonymous) @ mongo-id.js?hash=3c48f49624d42069d73cf451742e5ae288ebe75e:150
ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17:37
    at ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:242:3
(anonymous) @ ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:17
(anonymous) @ ordered-dict.js?hash=c008febf7731e2afd131736b350a513d0e9392f3:242
tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17:37
    at tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:632:3
(anonymous) @ tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:17
(anonymous) @ tracker.js?hash=ecbe849d006df6e1e5fbeffa6ccd0e6a315a601c:632
minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17 Uncaught TypeError: Cannot read properties of undefined (reading 'DiffSequence')
    at minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17:45
    at minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:4260:3
(anonymous) @ minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:17
(anonymous) @ minimongo.js?hash=42db2b0e9bb78e76f86e71d53f12018b3adb3209:4260
check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17:27
    at check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:572:3
(anonymous) @ check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:17
(anonymous) @ check.js?hash=f64c7a156e65a3e341e65eedd3c177a3bcfbfd97:572
retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Random')
    at retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17:29
    at retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:101:3
(anonymous) @ retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:17
(anonymous) @ retry.js?hash=07043432ec89ae3ee152c3049e82d9dd9b0a5eea:101
callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17:37
    at callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:188:3
(anonymous) @ callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:17
(anonymous) @ callback-hook.js?hash=68c04aea40c603a8ef804515e1590398cf33987e:188
ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17 Uncaught TypeError: Cannot read properties of undefined (reading 'check')
    at ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17:27
    at ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:475:3
(anonymous) @ ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:17
(anonymous) @ ddp-common.js?hash=d5f17e1d9d9ce4bb6facd5912508028ce893eb8e:475
reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17:37
    at reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:313:3
(anonymous) @ reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:17
(anonymous) @ reload.js?hash=bb77968ef1314e11291d515808ccef96dac3d502:313
socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Retry')
    at socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17:27
    at socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:2852:3
(anonymous) @ socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:17
(anonymous) @ socket-stream-client.js?hash=cead8e84bd8ebf243d505fc1bac78ee9d9e6be3d:2852
ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17 Uncaught TypeError: Cannot read properties of undefined (reading 'check')
    at ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17:27
    at ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:2170:3
(anonymous) @ ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:17
(anonymous) @ ddp-client.js?hash=12df120d82048869c74b009c3544bf96a2f333dc:2170
ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14 Uncaught TypeError: Cannot read properties of undefined (reading 'DDP')
    at ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14:33
    at ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:23:3
(anonymous) @ ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:14
(anonymous) @ ddp.js?hash=675438ff1bf207eeda74d574359af6643aefb5fd:23
allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17 Uncaught TypeError: Cannot read properties of undefined (reading 'LocalCollection')
    at allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17:41
    at allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:535:3
(anonymous) @ allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:17
(anonymous) @ allow-deny.js?hash=c92539f675743611acc2f86b84ed2429d2e5332a:535
logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17 Uncaught TypeError: Cannot read properties of undefined (reading 'EJSON')
    at logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17:27
    at logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:354:3
(anonymous) @ logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:17
(anonymous) @ logging.js?hash=2213e7be6f76c1a29ab1e38f3aa21a02e86ca99f:354
mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17 Uncaught TypeError: Cannot read properties of undefined (reading 'AllowDeny')
    at mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17:39
    at mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:967:3
(anonymous) @ mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:17
(anonymous) @ mongo.js?hash=0d8138f0bde9f403fab41d327adb8450697abfc8:967
reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17:31
    at reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:138:3
(anonymous) @ reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:17
(anonymous) @ reactive-var.js?hash=594fc3b2bc4dd3630b2534679abd98ee7fffae44:138
react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17:31
    at react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:577:3
(anonymous) @ react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:17
(anonymous) @ react-meteor-data.js?hash=5771e56e3974b64551a2c14983839c5f14739ca4:577
webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17 Uncaught TypeError: Cannot read properties of undefined (reading 'meteorInstall')
    at webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17:37
    at webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:64:3
(anonymous) @ webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:17
(anonymous) @ webapp.js?hash=20a4140c9753a20f5b2dd355cc14f5ae08a702a2:64
autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17 Uncaught TypeError: Cannot read properties of undefined (reading 'Tracker')
    at autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17:31
    at autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:325:3
(anonymous) @ autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:17
(anonymous) @ autoupdate.js?hash=a2decc29fd20c2cad4af897c0d632778da375b99:325
global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3 Uncaught TypeError: Cannot read properties of undefined (reading 'Mongo')
    at global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3:23
(anonymous) @ global-imports.js?hash=0e5fd16d23beff3020a6f96c85cc864a714e6634:3
app.js?hash=0b6a6e3ab9b295f20a4b2f9d69be2c620879afc8:1 Uncaught ReferenceError: meteorInstall is not defined
    at app.js?hash=0b6a6e3ab9b295f20a4b2f9d69be2c620879afc8:1:15```

How do i fix this and successfully run my meteor project across multiple macs


来源: stackexchange

问:
XAMPP MYSQL can't start after upgrading with MYSQL 8
I have upgrading mysql version from 5.7.25 to 8.0.3.1. But after i upgrade it, i start my XAMPP MYSQL only show

Attempting to start MySQL app...

my XAMPP version is 3.2.4

whats wrong? is XAMPP 3.2.4 can't run using mysql 8? in this case i can't upgrade my XAMPP

ContentLicense: CC BY-SA 4.0


问:
Host directory and mounted directory in minikube pv & pvc differ
I have created a pv and a pvc, and mount them via helm chart. It all seems to be linked properly, but when I make a change in the hostpath, it does not come through to the container, and if I change the contend of the mounted directory in the container, the change does not appear on the host.

I have ...

Checked if the pv exists and where it is sourced from

Checked if the pvc exists

Checked the pod, if it uses the pvc (it seems to)

Any ideas about what I could have forgotten?

Check if PV exist:

```<code>$ kc get pv
NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
wp-php-pv   2Gi        RWO            Retain           Bound    gaph/wp-php-pvc   standard                35m
</code>```

Check if PVC exist:

```<code>$ kc get pvc -n gaph
NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
wp-php-pvc   Bound    wp-php-pv   2Gi        RWO            standard       35m
</code>```

Check origin of PVC

```<code>$ kc describe pv wp-php-pv -n gaph
Name:            wp-php-pv
Labels:          type=local
Annotations:     pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    standard
Status:          Bound
Claim:           gaph/wp-php-pvc
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        2Gi
Node Affinity:   <none>
Message:
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /mnt/gaph/php-data
    HostPathType:
Events:            <none>
</code>```

Checking pod

```<code>$ kc describe pod $WP_POD_NAME -n gaph
Name:             gaph-wp-php-698599cbff-x7hmd
Namespace:        gaph
Priority:         0
Service Account:  gaph-wp-php
Node:             minikube/192.168.49.2
Start Time:       Fri, 06 Jan 2023 15:42:07 +1300
Labels:           app.kubernetes.io/instance=gaph-wp
                  app.kubernetes.io/name=php
                  pod-template-hash=698599cbff
Annotations:      <none>
Status:           Running
IP:               172.17.0.4
IPs:
  IP:           172.17.0.4
Controlled By:  ReplicaSet/gaph-wp-php-698599cbff
Containers:
  php:
    Container ID:   docker://f72747594bcd5ae8bbf53b24fecf69f4776f1e7a351d01ef8cdd1e210ebb984e
    Image:          php:8.2-apache
    Image ID:       docker-pullable://php@sha256:739420c858b1f447490c55971416298699678203353ba13e47e4e57b8318c94f
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 06 Jan 2023 15:42:39 +1300
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 06 Jan 2023 15:42:08 +1300
      Finished:     Fri, 06 Jan 2023 15:42:38 +1300
    Ready:          True
    Restart Count:  1
    Liveness:       http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
    Readiness:      http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rm7xn (ro)
      /var/www/html from wp-php-pv (rw)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  wp-php-pv:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  wp-php-pvc
    ReadOnly:   false
  kube-api-access-rm7xn:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
...
</code>```

Checking directory inside pod

... via kubectl exec ...

```<code>/var/www/html# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jan  6 02:47 .
drwxr-xr-x 1 root root 4096 Dec 21 05:06 ..
-rw-r--r-- 1 root root    0 Jan  6 02:47 hellosuperworld.html
-rw-r--r-- 1 root root    0 Jan  6 02:42 index.html
</code>```

Checking directory on host

```<code>$ tree /mnt/gaph
/mnt/gaph
└── php-data
    └── index.php
</code>```

This is on Ubuntu 22.04

Body:
I have created a pv and a pvc, and mount them via helm chart. It all seems to be linked properly, but when I make a change in the hostpath, it does not come through to the container, and if I change the contend of the mounted directory in the container, the change does not appear on the host.

I have ...

Checked if the pv exists and where it is sourced from

Checked if the pvc exists

Checked the pod, if it uses the pvc (it seems to)

Any ideas about what I could have forgotten?

Check if PV exist:

$ kc get pv
NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
wp-php-pv   2Gi        RWO            Retain           Bound    gaph/wp-php-pvc   standard                35m

Check if PVC exist:

$ kc get pvc -n gaph
NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
wp-php-pvc   Bound    wp-php-pv   2Gi        RWO            standard       35m

Check origin of PVC

$ kc describe pv wp-php-pv -n gaph
Name:            wp-php-pv
Labels:          type=local
Annotations:     pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    standard
Status:          Bound
Claim:           gaph/wp-php-pvc
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        2Gi
Node Affinity:   <none>
Message:
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /mnt/gaph/php-data
    HostPathType:
Events:            <none>

Checking pod

$ kc describe pod $WP_POD_NAME -n gaph
Name:             gaph-wp-php-698599cbff-x7hmd
Namespace:        gaph
Priority:         0
Service Account:  gaph-wp-php
Node:             minikube/192.168.49.2
Start Time:       Fri, 06 Jan 2023 15:42:07 +1300
Labels:           app.kubernetes.io/instance=gaph-wp
                  app.kubernetes.io/name=php
                  pod-template-hash=698599cbff
Annotations:      <none>
Status:           Running
IP:               172.17.0.4
IPs:
  IP:           172.17.0.4
Controlled By:  ReplicaSet/gaph-wp-php-698599cbff
Containers:
  php:
    Container ID:   docker://f72747594bcd5ae8bbf53b24fecf69f4776f1e7a351d01ef8cdd1e210ebb984e
    Image:          php:8.2-apache
    Image ID:       docker-pullable://php@sha256:739420c858b1f447490c55971416298699678203353ba13e47e4e57b8318c94f
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 06 Jan 2023 15:42:39 +1300
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 06 Jan 2023 15:42:08 +1300
      Finished:     Fri, 06 Jan 2023 15:42:38 +1300
    Ready:          True
    Restart Count:  1
    Liveness:       http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
    Readiness:      http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rm7xn (ro)
      /var/www/html from wp-php-pv (rw)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  wp-php-pv:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  wp-php-pvc
    ReadOnly:   false
  kube-api-access-rm7xn:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
...

Checking directory inside pod

... via kubectl exec ...

/var/www/html# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jan  6 02:47 .
drwxr-xr-x 1 root root 4096 Dec 21 05:06 ..
-rw-r--r-- 1 root root    0 Jan  6 02:47 hellosuperworld.html
-rw-r--r-- 1 root root    0 Jan  6 02:42 index.html

Checking directory on host

$ tree /mnt/gaph
/mnt/gaph
└── php-data
    └── index.php

This is on Ubuntu 22.04


问:
Is PHP session retained through intervening PHP pages executed on the server?
Sorry, this seems pretty basic, but I cannot find a definitive answer and am not well-versed enough in PHP sessions to know if this is obvious.

Suppose I have 3 PHP pages. The usual client behavior is to visit page1.php, then submit a post to page2.php.  page2.php runs, and then passes the user back to page1.php or on to page3.php.
page2.php is a script on the server that does not send anything to the browser. And page2.php does not need anything in the session.

If I have session_start() only on page1.php and page3.php, will the session get lost moving through page2.php? Thanks!


问:
type mistmach for notmodified enum while loading Fixtures
I'm using @ApplicationStart job to fill dev db with some values, but i'm encountering strange behavoiur after i clear it with:

```<code>Fixtures.deleteDatabase()
</code>```

Some of my models have a field which is enumeration, each time when it tries to read object from yaml it stops on one of these models with enumerations and fires exception some thing like this:

```<code>play.exceptions.JavaExecutionException: Parameter value [OPEN] was not matching type  [enumerations.OrderStatus]
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: Parameter value [OPEN] was not matching  type [enumerations.OrderStatus]
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:360)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:435)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:72)
    at play.db.jpa.JPQL.bindParameters(JPQL.java:169)
    at play.db.jpa.JPQL.find(JPQL.java:46)
    at models.Order.find(Order.java)
    at controllers.Application._prepare(Application.java:52)
...
</code>```

I'm not modifing enum. it is "all the way" the same.
What im doing wrong?

ps.Enum is not mapped to db, i think that it could be root of problem but than could you advise how to do it right way from architectual point of view? i'm almost newbie in hibernate/jpa

Upd1

it happens ocassionaly on onloading, here is one of models in yaml where it crashes (as you see nothing odd here):

```<code>models.users.GenUser(usr3):
    name: V
    phoneNumber: "1234567890"
    email: v@mail.com.not
    login: v
    password: "123"
    userStatus: ACTIVE
</code>```

here 'userStatus' is an enum with possiblevalues ACTIVE, BANNED, and others.

i found only one solution - trop table(s) for model and let hibernate to recreate it(them). but sometimes due to relations it is easier to drop whole db and it is very annyoing ;(

ContentLicense: CC BY-SA 3.0

Body:
I'm using @ApplicationStart job to fill dev db with some values, but i'm encountering strange behavoiur after i clear it with:

Fixtures.deleteDatabase()

Some of my models have a field which is enumeration, each time when it tries to read object from yaml it stops on one of these models with enumerations and fires exception some thing like this:

play.exceptions.JavaExecutionException: Parameter value [OPEN] was not matching type  [enumerations.OrderStatus]
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:229)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.IllegalArgumentException: Parameter value [OPEN] was not matching  type [enumerations.OrderStatus]
    at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:360)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:435)
    at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:72)
    at play.db.jpa.JPQL.bindParameters(JPQL.java:169)
    at play.db.jpa.JPQL.find(JPQL.java:46)
    at models.Order.find(Order.java)
    at controllers.Application._prepare(Application.java:52)
...

I'm not modifing enum. it is "all the way" the same.
What im doing wrong?

ps.Enum is not mapped to db, i think that it could be root of problem but than could you advise how to do it right way from architectual point of view? i'm almost newbie in hibernate/jpa

Upd1

it happens ocassionaly on onloading, here is one of models in yaml where it crashes (as you see nothing odd here):

models.users.GenUser(usr3):
    name: V
    phoneNumber: "1234567890"
    email: v@mail.com.not
    login: v
    password: "123"
    userStatus: ACTIVE

here 'userStatus' is an enum with possiblevalues ACTIVE, BANNED, and others.

i found only one solution - trop table(s) for model and let hibernate to recreate it(them). but sometimes due to relations it is easier to drop whole db and it is very annyoing ;(


问:
I tried uploading an image to the CPanel HTML Editor and it looks broken in the browser
I have never worked with CPanel editor, I'm more familiar with building and editing websites using Wordpress. I needed to replace and image on a website with a new one using the CPanel HTML editor but the image I uploaded looks broken in the browser and I got this message in the error logs:

Cannot serve directory /home/sbfoot14/public_html/superleaguefinaltickets.com/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive

I had previously uploaded the image into an images file in file manager. Then I went to the editor where a pop up window shows the old image and there´s a button to browse for the new one saved in the images folder. I resized it and it looked good in the editor so I saved it. Then I checked the website in google chrome and it was broken.

I thought maybe I had uploaded the image to the incorrect directory so I uploaded it again but this time to public.html and in the editor I browsed for that one but I'm still having the same error.


问:
Adminjs middleware not getting executed
I am using adminJS and want to log all incoming requests along with the adminUser that initiated those requests.I added a simple middleware but it does not get executed at all

```<code>import AdminBro from 'adminjs';
import AdminBroExpress from '@adminjs/express';

const adminBro = new AdminBro({...});
const adminbroRouter = AdminBroExpress.buildAuthenticatedRouter(
  adminBro,
  {
    authenticate: async (email, password) => {
      try {
        const account = await AuthService.getByEmail(email);
        if (!account) {
          return false;
        }
        const { password: accountPassword } =
          await AuthService.getPasswordByEmail(email);
        if (!(await isHashEqual(accountPassword, password))) {
          return false;
        }
        if (!AuthService.isAdmin(account as any)) {
          return false;
        }
        return account;
      } catch (error) {
        return false;
      }
    },
    cookiePassword: ADMINJS_COOKIE_PASSWORD,
    cookieName: ADMINJS_COOKIE_NAME,
    maxRetries: {
      count: ADMINJS_MAX_RETRIES_COUNT,
      duration: ADMINJS_MAX_RETRIES_DURATION,
    },
  },
  null,
  sessionOptions,
);

adminbroRouter.use((req, res, next) => {
  // Why is this not getting called?
  console.log(req.path, req.adminUser);
  return next();
});
</code>```

Adminjs version 6.2.4 if that helps

UPDATE 1

Updated adminjs to 6.7.4 which is the latest version and ran the code here, still the same problem

Title: Adminjs middleware not getting executed

Body:
I am using adminJS and want to log all incoming requests along with the adminUser that initiated those requests.I added a simple middleware but it does not get executed at all

import AdminBro from 'adminjs';
import AdminBroExpress from '@adminjs/express';

const adminBro = new AdminBro({...});
const adminbroRouter = AdminBroExpress.buildAuthenticatedRouter(
  adminBro,
  {
    authenticate: async (email, password) => {
      try {
        const account = await AuthService.getByEmail(email);
        if (!account) {
          return false;
        }
        const { password: accountPassword } =
          await AuthService.getPasswordByEmail(email);
        if (!(await isHashEqual(accountPassword, password))) {
          return false;
        }
        if (!AuthService.isAdmin(account as any)) {
          return false;
        }
        return account;
      } catch (error) {
        return false;
      }
    },
    cookiePassword: ADMINJS_COOKIE_PASSWORD,
    cookieName: ADMINJS_COOKIE_NAME,
    maxRetries: {
      count: ADMINJS_MAX_RETRIES_COUNT,
      duration: ADMINJS_MAX_RETRIES_DURATION,
    },
  },
  null,
  sessionOptions,
);

adminbroRouter.use((req, res, next) => {
  // Why is this not getting called?
  console.log(req.path, req.adminUser);
  return next();
});

Adminjs version 6.2.4 if that helps

UPDATE 1

Updated adminjs to 6.7.4 which is the latest version and ran the code here, still the same problem


问:
Implementing Stripe into expo react native getting the error of the return_url
I'm trying to use stripe in my Expo react native app. I have created a paymentIntent from my backend code and return to my mobile app but I have got a missing return_url error when I try to confirm my payment.

```<code>{"code": "Failed", "declineCode": null, "localizedMessage": "There was an unexpected error -- try again in a few seconds", "message": "You must provide a `return_url` when confirming a PaymentIntent with the payment method type alipay", "stripeErrorCode": "", "type": "invalid_request_error"}
</code>```

My code looks like this:

```<code>import React, { useEffect, useCallback, useState } from 'react'
import { Linking } from 'react-native'
import {
  StripeProvider,
  useConfirmPayment,
  useStripe,
} from '@stripe/stripe-react-native'
import API from '../api/lib/api'
import { CreateParams } from '@stripe/stripe-react-native/lib/typescript/src/types/PaymentMethod'
import { Box, Button } from 'native-base'
import { _log } from '../utils/utils'
import { useFocusEffect } from '@react-navigation/native'
const STRIPE_PUBLBISHABLE_KEY =
  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

export default function AlipayScreen() {
  const { handleURLCallback } = useStripe()
  const [email, setEmail] = useState('')
  const { confirmPayment, loading } = useConfirmPayment()

  const handlePayPress = async () => {
    const _paymentObj = await API.sendPayment({
      test: 1,
    })
    const options = {
      type: 'Alipay',
    }
    _log(_paymentObj.paymentIntent)
    let { error, paymentIntent } = await confirmPayment(
      _paymentObj.paymentIntent,
      {
        paymentMethodType: 'Alipay',
        //returnUrl:exp://172.25.40.204:19000
      },
    )

    if (error) {
      _log(error)
    } else if (paymentIntent) {
      _log(paymentIntent)
    }
  }
  const handleDeepLink = useCallback(
    async (url: string | null) => {
      if (url) {
        const stripeHandled = await handleURLCallback(url)
        _log(stripeHandled)
        if (stripeHandled) {
          // This was a Stripe URL - you can return or add extra handling here as you see fit
        } else {
          // This was NOT a Stripe URL – handle as you normally would
        }
      }
    },
    [handleURLCallback],
  )

  useFocusEffect(
    React.useCallback(() => {
      const getUrlAsync = async () => {
        const initialUrl = await Linking.getInitialURL()
        _log('initalUrl')
        _log(initialUrl)
        handleDeepLink(initialUrl)
      }

      getUrlAsync()

      const deepLinkListener = Linking.addEventListener(
        'url',
        (event: { url: string }) => {
          handleDeepLink(event.url)
        },
      )

      return () => deepLinkListener.remove()
    }, [handleDeepLink]),
  )

  return (
    <StripeProvider publishableKey={STRIPE_PUBLBISHABLE_KEY}>
      <Button onPress={handlePayPress}>test</Button>
    </StripeProvider>
  )
}

</code>```

I try to add "returnUrl" to the confirmPayment but it gives me a type error and aslo doesn't work, Anyone can help me on this issue?

```<code>'returnUrl' does not exist in type 'AlipayParams'
</code>```

Body:
I'm trying to use stripe in my Expo react native app. I have created a paymentIntent from my backend code and return to my mobile app but I have got a missing return_url error when I try to confirm my payment.

{"code": "Failed", "declineCode": null, "localizedMessage": "There was an unexpected error -- try again in a few seconds", "message": "You must provide a `return_url` when confirming a PaymentIntent with the payment method type alipay", "stripeErrorCode": "", "type": "invalid_request_error"}

My code looks like this:

import React, { useEffect, useCallback, useState } from 'react'
import { Linking } from 'react-native'
import {
  StripeProvider,
  useConfirmPayment,
  useStripe,
} from '@stripe/stripe-react-native'
import API from '../api/lib/api'
import { CreateParams } from '@stripe/stripe-react-native/lib/typescript/src/types/PaymentMethod'
import { Box, Button } from 'native-base'
import { _log } from '../utils/utils'
import { useFocusEffect } from '@react-navigation/native'
const STRIPE_PUBLBISHABLE_KEY =
  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

export default function AlipayScreen() {
  const { handleURLCallback } = useStripe()
  const [email, setEmail] = useState('')
  const { confirmPayment, loading } = useConfirmPayment()

  const handlePayPress = async () => {
    const _paymentObj = await API.sendPayment({
      test: 1,
    })
    const options = {
      type: 'Alipay',
    }
    _log(_paymentObj.paymentIntent)
    let { error, paymentIntent } = await confirmPayment(
      _paymentObj.paymentIntent,
      {
        paymentMethodType: 'Alipay',
        //returnUrl:exp://172.25.40.204:19000
      },
    )

    if (error) {
      _log(error)
    } else if (paymentIntent) {
      _log(paymentIntent)
    }
  }
  const handleDeepLink = useCallback(
    async (url: string | null) => {
      if (url) {
        const stripeHandled = await handleURLCallback(url)
        _log(stripeHandled)
        if (stripeHandled) {
          // This was a Stripe URL - you can return or add extra handling here as you see fit
        } else {
          // This was NOT a Stripe URL – handle as you normally would
        }
      }
    },
    [handleURLCallback],
  )

  useFocusEffect(
    React.useCallback(() => {
      const getUrlAsync = async () => {
        const initialUrl = await Linking.getInitialURL()
        _log('initalUrl')
        _log(initialUrl)
        handleDeepLink(initialUrl)
      }

      getUrlAsync()

      const deepLinkListener = Linking.addEventListener(
        'url',
        (event: { url: string }) => {
          handleDeepLink(event.url)
        },
      )

      return () => deepLinkListener.remove()
    }, [handleDeepLink]),
  )

  return (
    <StripeProvider publishableKey={STRIPE_PUBLBISHABLE_KEY}>
      <Button onPress={handlePayPress}>test</Button>
    </StripeProvider>
  )
}

I try to add "returnUrl" to the confirmPayment but it gives me a type error and aslo doesn't work, Anyone can help me on this issue?

'returnUrl' does not exist in type 'AlipayParams'


问:
How do you use System-assigned managed identity? ManagedIdentityCredential: The managed identity endpoint is indicating there's no available identity
I a resource Azure Media Service and an Azure Web app service.

What I am trying to do is turn the web app's identity into a system assigned identity. I get this error ManagedIdentityCredential: The managed identity endpoint is indicating there's no available identity. Message: undefined Status code: 400

const credential = new DefaultAzureCredential({
    managedIdentityClientId: "0000000-0000-0000-0000-000000000000"
});
```

I am using the object ID of the web app.

I then go to the resource media service (Access Control (IAM)) and turn on these resources: [Media Services Account Administrator, Media Services Live Events Administrator, Media Services Operator]

In my mind I am thinking the accessing resource (web app) Managed Identity would be the "source" and the media service would be the "target. It just gives that error.

I even tried from the web app to use the Azure role assignments Add role assignment (preview).

But what's odd about that is you can't target the resource but only a subscription, resource group and some specific things.

To note, when using the user based assigned identity that works and is probably the preferable way of doing it anyway.

Body:
I a resource Azure Media Service and an Azure Web app service.

What I am trying to do is turn the web app's identity into a system assigned identity. I get this error ManagedIdentityCredential: The managed identity endpoint is indicating there's no available identity. Message: undefined Status code: 400

const credential = new DefaultAzureCredential({
    managedIdentityClientId: "0000000-0000-0000-0000-000000000000"
});

I am using the object ID of the web app.

I then go to the resource media service (Access Control (IAM)) and turn on these resources: [Media Services Account Administrator, Media Services Live Events Administrator, Media Services Operator]

In my mind I am thinking the accessing resource (web app) Managed Identity would be the "source" and the media service would be the "target. It just gives that error.

I even tried from the web app to use the Azure role assignments Add role assignment (preview).

But what's odd about that is you can't target the resource but only a subscription, resource group and some specific things.

To note, when using the user based assigned identity that works and is probably the preferable way of doing it anyway.


问:
antd tabs -> how to remove
please help.

I want to remove a tab, but tabitems are redefined.
If I remove button tab2 out of tab1,tab2,tab3, only tab1,tab3 remain.
but if I remove 3 there, tab1, tab2 remain.\

when i debug, activekey is changed, but when click t remove button, activekey is not changed

```<code>    import React, { useState,useEffect } from 'react'; import Image from "next/image"; import { Title, ButtonWrap } from '../../styles/com'; import { Dropdown, Card, Button, Divider, Tabs } from 'antd'; import { MoreOutlined, CheckOutlined } from '@ant-design/icons'; import ArtsInsertFormTab from './ArtsInsertFormTab';

    export default function ArtsInsertTab (props) {

    const items = [
        {
            key: '1',
            label: 'delete'
        },
    ];

    const remove = () => {
        console.log(activeKey)
        let newActiveKey = activeKey;
        let lastIndex = -1;
        tabitems.forEach((item, i) => {
        if (item.key === key) {
            lastIndex = i - 1;
        }
        });

        const newPanes = tabitems.filter((item) => item.key !== activeKey);
        if (newPanes.length && newActiveKey === activeKey) {
        if (lastIndex >= 0) {
            newActiveKey = newPanes[lastIndex].key;
        } else {
            newActiveKey = newPanes[0].key;
        }
        }
        setTabItems(newPanes);
        setActiveKey(newActiveKey);
    };

    const tabitem = new Array(props.imgList.length).fill(null).map((_, i) => {
        return {
            label: <Image alt="example" src={props.imgList[i].url} width='60' height='60'/>,
            key: String(i + 1),
            children:
            <div>
              <Card
                data-props='collapse'
                bordered={false}
                extra={
                  <>
                    <Dropdown menu={{items, onClick: remove,}}>
                      <a onClick={(e) => e.preventDefault()}>
                        <MoreOutlined/>
                      </a>
                    </Dropdown>
                  </>
                }>
                <ArtsInsertFormTab props={props.imgList[i]}/>
              </Card>
              <ButtonWrap>
                <Button onClick={cancleButton} size='large'><div>cancle</div></Button>
                <div>
                  <Button size='large'><div>dd</div></Button>
                  <Button type='primary' size='large' onClick={saveButton} icon={<CheckOutlined/>}><div>save</div></Button>
                </div>
              </ButtonWrap>
            </div>
        };
      });

    const venueId = props.venueId;
    const formData = new FormData();
    const [activeKey, setActiveKey] = useState(initialItems[0].key);
    const [tabitems, setTabItems] = useState(tabitem);
    const [isCheckUse, setIsCheckUse] = useState(false);
    const [formState, setFormState] = useState({
        artwork_title : "",
        artwork_artist_nm : "",
        artwork_date : "",
        artwork_img_alt : "",
        artwork_meterial : "",
        artwork_size : "",
        mapping_list : "",
        artwork_location : "",
        artwork_intro_url : "",
        artwork_view_url : "",
        artwork_view_playtime : "",
        artwork_next : "",
        artwork_tag1 : "",
        artwork_tag2 : "",
        artwork_tag3 : "",
        artwork_tag4 : "",
        use_yn : "",

    });

    // useEffect(() => {
    //     console.log("activekey: "+activeKey);
    //     key = activeKey;
    // }, [activeKey]);

    useEffect(() => {
        console.log("tabtimeslend: "+tabitems.length);
    }, [tabitems]);

    const cancleButton = ()=>{

    }
    const saveButton = ()=>{
        //formValidation();

        formData.append("exhibition_nm", formState.exhibition_nm);
        formData.append("exhibition_start_date", formState.exhibition_start_date);
        formData.append("exhibition_end_date", formState.exhibition_end_date);
        formData.append("exhibition_inline_text", formState.exhibition_inline_text);
        formData.append("exhibition_img_alt", formState.exhibition_img_alt);
        formData.append("exhibition_text", formState.exhibition_text);
        formData.append("multipartFiles_map", formState.multipartFiles_map);
        formData.append("exhibition_intro_url", formState.exhibition_intro_url);
        formData.append("exhibition_img_ext", props.imgList[0].ext);
        formData.append("exhibition_img_type", 'testImage');
        formData.append("multipartFiles_img", new Blob([JSON.stringify(props.imgList[0])], { type: "multipart/form-data}" }));
        formData.append("exhibitionMapImgCnt", 1);
        formData.append("useyn", isCheckUse  ? 'Y' :'N');

        fetch(`http://localhost:8090/api/exhibition/insertExhibition`, {
        method: 'POST',
        body: formData,
        processData: false,
        contentType: false,
        headers: {
        }

        })
        .then(response => response.json())
        .then(response => {
            alert('accepte');
        });
    }

    const ontabChange = (newActiveKey) => {
        console.log(newActiveKey)
        key = newActiveKey;
        //setActiveKey(newActiveKey);
    };

    return (
        <>
        <Title>
            <h1>test</h1>
        </Title>
        <Tabs
            style={{minWidth: '1400px'}}
            defaultActiveKey="1"
            onChange={ontabChange}
            type="card"
            tabPosition="right"
            items={tabitems}
        >
        </Tabs>
        </>
    )
    }
</code>```

Title: antd tabs -> how to remove

Body:
please help.

I want to remove a tab, but tabitems are redefined.
If I remove button tab2 out of tab1,tab2,tab3, only tab1,tab3 remain.
but if I remove 3 there, tab1, tab2 remain.\

when i debug, activekey is changed, but when click t remove button, activekey is not changed

    import React, { useState,useEffect } from 'react'; import Image from "next/image"; import { Title, ButtonWrap } from '../../styles/com'; import { Dropdown, Card, Button, Divider, Tabs } from 'antd'; import { MoreOutlined, CheckOutlined } from '@ant-design/icons'; import ArtsInsertFormTab from './ArtsInsertFormTab';

    export default function ArtsInsertTab (props) {

    const items = [
        {
            key: '1',
            label: 'delete'
        },
    ];

    const remove = () => {
        console.log(activeKey)
        let newActiveKey = activeKey;
        let lastIndex = -1;
        tabitems.forEach((item, i) => {
        if (item.key === key) {
            lastIndex = i - 1;
        }
        });

        const newPanes = tabitems.filter((item) => item.key !== activeKey);
        if (newPanes.length && newActiveKey === activeKey) {
        if (lastIndex >= 0) {
            newActiveKey = newPanes[lastIndex].key;
        } else {
            newActiveKey = newPanes[0].key;
        }
        }
        setTabItems(newPanes);
        setActiveKey(newActiveKey);
    };

    const tabitem = new Array(props.imgList.length).fill(null).map((_, i) => {
        return {
            label: <Image alt="example" src={props.imgList[i].url} width='60' height='60'/>,
            key: String(i + 1),
            children:

              <Card
                data-props='collapse'
                bordered={false}
                extra={
                  <>
                    <Dropdown menu={{items, onClick: remove,}}>
                       e.preventDefault()}>
                        <MoreOutlined/>

                    </Dropdown>
                  </>
                }>
                <ArtsInsertFormTab props={props.imgList[i]}/>
              </Card>
              <ButtonWrap>
                <Button onClick={cancleButton} size='large'>
cancle
</Button>

                  <Button size='large'>
dd
</Button>
                  <Button type='primary' size='large' onClick={saveButton} icon={<CheckOutlined/>}>
save
</Button>

              </ButtonWrap>

        };
      });

    const venueId = props.venueId;
    const formData = new FormData();
    const [activeKey, setActiveKey] = useState(initialItems[0].key);
    const [tabitems, setTabItems] = useState(tabitem);
    const [isCheckUse, setIsCheckUse] = useState(false);
    const [formState, setFormState] = useState({
        artwork_title : "",
        artwork_artist_nm : "",
        artwork_date : "",
        artwork_img_alt : "",
        artwork_meterial : "",
        artwork_size : "",
        mapping_list : "",
        artwork_location : "",
        artwork_intro_url : "",
        artwork_view_url : "",
        artwork_view_playtime : "",
        artwork_next : "",
        artwork_tag1 : "",
        artwork_tag2 : "",
        artwork_tag3 : "",
        artwork_tag4 : "",
        use_yn : "",

    });

    // useEffect(() => {
    //     console.log("activekey: "+activeKey);
    //     key = activeKey;
    // }, [activeKey]);

    useEffect(() => {
        console.log("tabtimeslend: "+tabitems.length);
    }, [tabitems]);

    const cancleButton = ()=>{

    }
    const saveButton = ()=>{
        //formValidation();

        formData.append("exhibition_nm", formState.exhibition_nm);
        formData.append("exhibition_start_date", formState.exhibition_start_date);
        formData.append("exhibition_end_date", formState.exhibition_end_date);
        formData.append("exhibition_inline_text", formState.exhibition_inline_text);
        formData.append("exhibition_img_alt", formState.exhibition_img_alt);
        formData.append("exhibition_text", formState.exhibition_text);
        formData.append("multipartFiles_map", formState.multipartFiles_map);
        formData.append("exhibition_intro_url", formState.exhibition_intro_url);
        formData.append("exhibition_img_ext", props.imgList[0].ext);
        formData.append("exhibition_img_type", 'testImage');
        formData.append("multipartFiles_img", new Blob([JSON.stringify(props.imgList[0])], { type: "multipart/form-data}" }));
        formData.append("exhibitionMapImgCnt", 1);
        formData.append("useyn", isCheckUse  ? 'Y' :'N');

        fetch(`http://localhost:8090/api/exhibition/insertExhibition`, {
        method: 'POST',
        body: formData,
        processData: false,
        contentType: false,
        headers: {
        }

        })
        .then(response => response.json())
        .then(response => {
            alert('accepte');
        });
    }

    const ontabChange = (newActiveKey) => {
        console.log(newActiveKey)
        key = newActiveKey;
        //setActiveKey(newActiveKey);
    };

    return (
        <>
        <Title>

test

        </Title>
        <Tabs
            style={{minWidth: '1400px'}}
            defaultActiveKey="1"
            onChange={ontabChange}
            type="card"
            tabPosition="right"
            items={tabitems}
        >
        </Tabs>
        </>
    )
    }


问:
Replacing PatternAnalyzer class deprecated in org.elasticsearch.index.analysis.PatternAnalyzer
What can I use to replace the deprecated class PatternAnalyzer?
org.elasticsearch.index.analysis.PatternAnalyzer

source: https://lucene.apache.org/core/4_3_0/analyzers-common/index-all.html

We are trying to upgrade from elasticsearch 5.6 to es version 7.9

This is the gradle dependency

```<code>compile 'org.elasticsearch.client:elasticsearch-rest-client:7.9.0'
compile 'org.elasticsearch:elasticsearch:7.9.0'
</code>```

Then this the Tokenizer.java class

```<code>import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.util.CharArraySet;
import org.elasticsearch.index.analysis.PatternAnalyzer;

         private static Iterable<String> splitString(String str) {
                PatternAnalyzer analyzer = new PatternAnalyzer(
                        Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));

                List<String> results = new ArrayList<String>();
                String[] initialTokens = str.split("\\s+");
                for (String token : initialTokens) {
                    if (token.matches("\\d+\\w*\\-\\d+\\w*")) {
                        results.add(token);
                    } else {
                        try {
                            TokenStream tokenStream = analyzer.tokenStream(token, token);
                            tokenStream.reset();
                            CharTermAttribute termAttribute = tokenStream.getAttribute(CharTermAttribute.class);

                            while (tokenStream.incrementToken()) {
                                results.add(termAttribute.toString());
                            }

                            tokenStream.end();
                            tokenStream.close();

                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }

                analyzer.close();
                return results;
            }
</code>```

Build Error:

```<code>Tokenizer.java:13: error: cannot find symbol
import org.apache.lucene.analysis.util.CharArraySet;
                                      ^
  symbol:   class CharArraySet
  location: package org.apache.lucene.analysis.util

Tokenizer.java:14: error: cannot find symbol
import org.elasticsearch.index.analysis.PatternAnalyzer;
                                       ^
  symbol:   class PatternAnalyzer
  location: package org.elasticsearch.index.analysis

Tokenizer.java:157: error: cannot find symbol
        PatternAnalyzer analyzer = new PatternAnalyzer(
        ^
  symbol:   class PatternAnalyzer
  location: class Tokenizer

Tokenizer.java:157: error: cannot find symbol
        PatternAnalyzer analyzer = new PatternAnalyzer(
                                       ^
  symbol:   class PatternAnalyzer
  location: class Tokenizer

Tokenizer.java:158: error: cannot find symbol
                Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));
                                                        ^
  symbol:   class CharArraySet
  location: class Tokenizer
</code>```

Then I tried to replace with PattenTokenizer and getting this new build error

https://lucene.apache.org/core/8_0_0/analyzers-common/org/apache/lucene/analysis/pattern/package-summary.html#package.description

```<code>import org.apache.lucene.analysis.CharArraySet;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.pattern.PatternTokenizer;

private static Iterable<String> splitString(String str) {
        PatternTokenizer analyzer = new PatternTokenizer(
                Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));

        List<String> results = new ArrayList<String>();
        String[] initialTokens = str.split("\\s+");
        for (String token : initialTokens) {
            if (token.matches("\\d+\\w*\\-\\d+\\w*")) {
                results.add(token);
            } else {
                try {
                    TokenStream tokenStream = analyzer.tokenStream(token, token);
                    tokenStream.reset();
                    CharTermAttribute termAttribute = tokenStream.getAttribute(CharTermAttribute.class);

                    while (tokenStream.incrementToken()) {
                        results.add(termAttribute.toString());
                    }

                    tokenStream.end();
                    tokenStream.close();

                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }

        analyzer.close();
        return results;
    }
</code>```

New Build Error:

```<code>  Tokenizer.java:15: error: cannot find symbol
    import org.apache.lucene.analysis.util.CharArraySet;
                                          ^
      symbol:   class CharArraySet
      location: package org.apache.lucene.analysis.util

    Tokenizer.java:16: error: cannot find symbol
    import org.elasticsearch.index.analysis.PatternAnalyzer;
                                           ^
      symbol:   class PatternAnalyzer
      location: package org.elasticsearch.index.analysis

    Tokenizer.java:160: error: incompatible types: Pattern cannot be converted to AttributeFactory
                    Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));
                                   ^
    Tokenizer.java:169: error: cannot find symbol
                        TokenStream tokenStream = analyzer.tokenStream(token, token);
                                                          ^
      symbol:   method tokenStream(String,String)
      location: variable analyzer of type PatternTokenizer
</code>```

Body:
What can I use to replace the deprecated class PatternAnalyzer?
org.elasticsearch.index.analysis.PatternAnalyzer

source: https://lucene.apache.org/core/4_3_0/analyzers-common/index-all.html

We are trying to upgrade from elasticsearch 5.6 to es version 7.9

This is the gradle dependency

compile 'org.elasticsearch.client:elasticsearch-rest-client:7.9.0'
compile 'org.elasticsearch:elasticsearch:7.9.0'

Then this the Tokenizer.java class

import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.util.CharArraySet;
import org.elasticsearch.index.analysis.PatternAnalyzer;

         private static Iterable<String> splitString(String str) {
                PatternAnalyzer analyzer = new PatternAnalyzer(
                        Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));

                List<String> results = new ArrayList<String>();
                String[] initialTokens = str.split("\\s+");
                for (String token : initialTokens) {
                    if (token.matches("\\d+\\w*\\-\\d+\\w*")) {
                        results.add(token);
                    } else {
                        try {
                            TokenStream tokenStream = analyzer.tokenStream(token, token);
                            tokenStream.reset();
                            CharTermAttribute termAttribute = tokenStream.getAttribute(CharTermAttribute.class);

                            while (tokenStream.incrementToken()) {
                                results.add(termAttribute.toString());
                            }

                            tokenStream.end();
                            tokenStream.close();

                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }

                analyzer.close();
                return results;
            }

Build Error:

Tokenizer.java:13: error: cannot find symbol
import org.apache.lucene.analysis.util.CharArraySet;
                                      ^
  symbol:   class CharArraySet
  location: package org.apache.lucene.analysis.util

Tokenizer.java:14: error: cannot find symbol
import org.elasticsearch.index.analysis.PatternAnalyzer;
                                       ^
  symbol:   class PatternAnalyzer
  location: package org.elasticsearch.index.analysis

Tokenizer.java:157: error: cannot find symbol
        PatternAnalyzer analyzer = new PatternAnalyzer(
        ^
  symbol:   class PatternAnalyzer
  location: class Tokenizer

Tokenizer.java:157: error: cannot find symbol
        PatternAnalyzer analyzer = new PatternAnalyzer(
                                       ^
  symbol:   class PatternAnalyzer
  location: class Tokenizer

Tokenizer.java:158: error: cannot find symbol
                Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));
                                                        ^
  symbol:   class CharArraySet
  location: class Tokenizer

Then I tried to replace with PattenTokenizer and getting this new build error

https://lucene.apache.org/core/8_0_0/analyzers-common/org/apache/lucene/analysis/pattern/package-summary.html#package.description

import org.apache.lucene.analysis.CharArraySet;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.pattern.PatternTokenizer;

private static Iterable<String> splitString(String str) {
        PatternTokenizer analyzer = new PatternTokenizer(
                Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));

        List<String> results = new ArrayList<String>();
        String[] initialTokens = str.split("\\s+");
        for (String token : initialTokens) {
            if (token.matches("\\d+\\w*\\-\\d+\\w*")) {
                results.add(token);
            } else {
                try {
                    TokenStream tokenStream = analyzer.tokenStream(token, token);
                    tokenStream.reset();
                    CharTermAttribute termAttribute = tokenStream.getAttribute(CharTermAttribute.class);

                    while (tokenStream.incrementToken()) {
                        results.add(termAttribute.toString());
                    }

                    tokenStream.end();
                    tokenStream.close();

                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }

        analyzer.close();
        return results;
    }

New Build Error:

  Tokenizer.java:15: error: cannot find symbol
    import org.apache.lucene.analysis.util.CharArraySet;
                                          ^
      symbol:   class CharArraySet
      location: package org.apache.lucene.analysis.util

    Tokenizer.java:16: error: cannot find symbol
    import org.elasticsearch.index.analysis.PatternAnalyzer;
                                           ^
      symbol:   class PatternAnalyzer
      location: package org.elasticsearch.index.analysis

    Tokenizer.java:160: error: incompatible types: Pattern cannot be converted to AttributeFactory
                    Pattern.compile("(\\s+|-+)"), true, new CharArraySet(10, false));
                                   ^
    Tokenizer.java:169: error: cannot find symbol
                        TokenStream tokenStream = analyzer.tokenStream(token, token);
                                                          ^
      symbol:   method tokenStream(String,String)
      location: variable analyzer of type PatternTokenizer


问:
Unimplemented error thrown in webview_flutter in flutter web
I need to load a webview from dynamic URL in flutter web for that I am using webview_flutter: ^4.0.1.In sometimes I got ,

```<code>Error: UnimplementedError
    at Object.throw_ [as throw] (http://localhost:40977/dart_sdk.js:5080:11)
    at webview_flutter_web.WebWebViewPlatformController.new.updateSettings (http://localhost:40977/packages/webview_flutter_web/webview_flutter_web.dart.lib.js:171:17)
    at [_updateSettings] (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:696:48)
    at webview.WebViewController.__._updateWidget (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:689:36)
    at _updateWidget.next (<anonymous>)
    at runBody (http://localhost:40977/dart_sdk.js:40660:34)
    at Object._async [as async] (http://localhost:40977/dart_sdk.js:40691:7)
    at [_updateWidget] (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:687:20)
    at http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:498:34
    at _RootZone.runUnary (http://localhost:40977/dart_sdk.js:40511:59)
    at _FutureListener.then.handleValue (http://localhost:40977/dart_sdk.js:35438:29)
    at handleValueCallback (http://localhost:40977/dart_sdk.js:35999:49)
    at _Future._propagateToListeners (http://localhost:40977/dart_sdk.js:36037:17)
    at async._AsyncCallbackEntry.new.callback (http://localhost:40977/dart_sdk.js:35753:27)
    at Object._microtaskLoop (http://localhost:40977/dart_sdk.js:40778:13)
    at _startMicrotaskLoop (http://localhost:40977/dart_sdk.js:40784:13)
    at http://localhost:40977/dart_sdk.js:36261:9
</code>```

and sometimes it working without throw exception.

Below is the code I wrote for webview

```<code>WebViewController? wcontroller;
WebView(
  javascriptMode: JavascriptMode.unrestricted,
  onProgress: (pr) {
    Center(
      child: CircularProgressIndicator(),
    );
  },
  zoomEnabled: true,
  initialUrl: ''.toString(),
  onWebViewCreated: (WebViewController webViewController) async {
    wcontroller = webViewController;
    await wcontroller?.loadUrl(controller.getEventsListResponse2.value.data!.rows![controller.selectedIndex.value].eventUrl.toString());
  },
)
</code>```

Body:
I need to load a webview from dynamic URL in flutter web for that I am using webview_flutter: ^4.0.1.In sometimes I got ,

Error: UnimplementedError
    at Object.throw_ [as throw] (http://localhost:40977/dart_sdk.js:5080:11)
    at webview_flutter_web.WebWebViewPlatformController.new.updateSettings (http://localhost:40977/packages/webview_flutter_web/webview_flutter_web.dart.lib.js:171:17)
    at [_updateSettings] (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:696:48)
    at webview.WebViewController.__._updateWidget (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:689:36)
    at _updateWidget.next (<anonymous>)
    at runBody (http://localhost:40977/dart_sdk.js:40660:34)
    at Object._async [as async] (http://localhost:40977/dart_sdk.js:40691:7)
    at [_updateWidget] (http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:687:20)
    at http://localhost:40977/packages/webview_flutter/src/webview.dart.lib.js:498:34
    at _RootZone.runUnary (http://localhost:40977/dart_sdk.js:40511:59)
    at _FutureListener.then.handleValue (http://localhost:40977/dart_sdk.js:35438:29)
    at handleValueCallback (http://localhost:40977/dart_sdk.js:35999:49)
    at _Future._propagateToListeners (http://localhost:40977/dart_sdk.js:36037:17)
    at async._AsyncCallbackEntry.new.callback (http://localhost:40977/dart_sdk.js:35753:27)
    at Object._microtaskLoop (http://localhost:40977/dart_sdk.js:40778:13)
    at _startMicrotaskLoop (http://localhost:40977/dart_sdk.js:40784:13)
    at http://localhost:40977/dart_sdk.js:36261:9

and sometimes it working without throw exception.

Below is the code I wrote for webview

WebViewController? wcontroller;
WebView(
  javascriptMode: JavascriptMode.unrestricted,
  onProgress: (pr) {
    Center(
      child: CircularProgressIndicator(),
    );
  },
  zoomEnabled: true,
  initialUrl: ''.toString(),
  onWebViewCreated: (WebViewController webViewController) async {
    wcontroller = webViewController;
    await wcontroller?.loadUrl(controller.getEventsListResponse2.value.data!.rows![controller.selectedIndex.value].eventUrl.toString());
  },
)


问:
Mapping multiple arrays, comparing values
Mapping multiple arrays to compare keys and values. I get multiple rows of the same data returned and the data of the objects get mixed as well. I'm assuming it has to do with the indexes but at this point my head is hurting and my eyes are blind

return (

      {previousTransferData.map((oldData, newIndexs) => (

          {transfers[newIndexs].empnum === previousTransferData[newIndexs].empnum_previous &&
        <>
          {Object.entries(oldData).map((oldDataKv, oldDataKvIndex) => (

            {/* {console.log(oldDataKv)} */}
            {/* {oldDataKv[0]} */}
              {transfers.map((newData, newIndex) => (

                  {/* {console.log("newIndex ", newIndex)} */}
                  {Object.entries(newData).map((newDataKV, nDataKvIndex) => (

                      <>
                      {/* {console.log(nDataKvIndex)} */}
                      {oldDataKv[0].replace("previous_", "") === newDataKV[0] &&
                        !doNotInclude.includes(oldDataKv[0].replace("previous_", "")) && (

                                {/* {console.log("newDataKV[0] ",newDataKV[0])} */}
                            {Object.values(parsedCsvData).map((csvDataSplit, csvI) => (

                                  {
                                    Object.values(csvDataSplit)[1] ===
                                      newDataKV[0] && (
                                        <StrongUnderlinedValue
                                        oldDataTitle={oldDataKv[0].includes(oldDataKv[0]) ? oldDataKv[0] :"" }
                                        // oldDataTitle={oldDataKv[0]  }
                                        underlinedValue={oldDataKv[1]}
                                        newDataTitle={newDataKV[0]}
                                        newUnderlinedData={newDataKV[1]}
                                        />
                                    )
                                  }

                              )
                            )}

                        )}
                      </>
                        {/* }        */}

                  ))}

              ))}

          ))}
        </>
        }

      ))}

```


问:
Getting different result in local environment and online php playground
I was working on some php code with a global variable. The result was not what i expected. After much effort, I went back to the basics. Took this code off php.net which shows the basic usage of globals.

```<code>$a = 1;
$b = 2;

function Sum()
{
 global $a, $b;

 $b = $a + $b;
}
Sum();
echo $b;
</code>```

global var code source

The result is supposed to be 3.
I copied the exact piece of code and tested it in my local environment. I got 2 instead.
I can't figure out the inconsistency.

Has anyone had a similar experience?

For reference, this is the screenshot of the result I got for the exact same piece of code:

Body:
I was working on some php code with a global variable. The result was not what i expected. After much effort, I went back to the basics. Took this code off php.net which shows the basic usage of globals.

$a = 1;
$b = 2;

function Sum()
{
 global $a, $b;

 $b = $a + $b;
}
Sum();
echo $b;

global var code source

The result is supposed to be 3.
I copied the exact piece of code and tested it in my local environment. I got 2 instead.
I can't figure out the inconsistency.

Has anyone had a similar experience?

For reference, this is the screenshot of the result I got for the exact same piece of code:


问:
How should I close a MySQL pool connection correctly within a NodeJS application?
I have a code like following:

```<code>import { RowDataPacket, FieldPacket } from "mysql2";
import { Request, Response, NextFunction } from "express";

import { pool } from "../config/db";
import { IUser } from "../models/user";

class User {

  static async readAll(req: Request, res: Response, next: NextFunction) {
    let user: IUser;
    let users: [IUser];
    await pool.execute<IUser[]>("SELECT * FROM users")
      .then((result) => {
        const [users] = result as [RowDataPacket, FieldPacket[]];
        res.send(users);
      })
      .catch(err => { console.log(err); next(); })
      // .finally(() => pool.end());
  }

  static async readById(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "SELECT * FROM users WHERE id = ?",
      [req.params.id])
      .then(result => res.status(200).json(result))
      .catch(err => console.log(err));
  };

  static async create(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "INSERT INTO users (email, password, username , admin) VALUES(?,?,?,?)",
      [req.body.email, req.body.password, req.body.username = req.body.email, req.body.admin])
      .then(() => {
        res.status(200).json(("user created successfully"));
      })
      .catch(err => { console.log(err); next(); })

  }

  static async update(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "UPDATE users SET email = ?, password = ?, admin = ? WHERE id = ?",
      [req.body.email, req.body.password, req.body.username, req.body.admin, req.body.id])
      .then((result => res.status(201).json("updated user" + "SELECT LAST UPDATED ID()")))
      .catch(err => console.log(err));
  }

  static async remove(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "DELETE FROM users WHERE id = ?",
      [req.params.id]);

  }
}

export { User };
</code>```

I am wondering to know how should I close the pool connection? I tried to add .finally(() => pool.end()); at the end of the each function (as you can see one of them I have commented outin readAll() function) but it closes the pool and I get the pool is close error message for other requests.

So hw should I close a pool correctly?

EDIT: This is /config/db file:

```<code>import mysql from "mysql2";

const pool =  mysql.createPool(
  {
  host : (process.env.DB_HOST),
  user : (process.env.DB_USER),
  password:  (process.env.DB_PASSWORD ),
  database: (process.env.DB_NAME ),
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
  }).promise();
</code>```

Body:
I have a code like following:

import { RowDataPacket, FieldPacket } from "mysql2";
import { Request, Response, NextFunction } from "express";

import { pool } from "../config/db";
import { IUser } from "../models/user";

class User {

  static async readAll(req: Request, res: Response, next: NextFunction) {
    let user: IUser;
    let users: [IUser];
    await pool.execute<IUser[]>("SELECT * FROM users")
      .then((result) => {
        const [users] = result as [RowDataPacket, FieldPacket[]];
        res.send(users);
      })
      .catch(err => { console.log(err); next(); })
      // .finally(() => pool.end());
  }

  static async readById(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "SELECT * FROM users WHERE id = ?",
      [req.params.id])
      .then(result => res.status(200).json(result))
      .catch(err => console.log(err));
  };

  static async create(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "INSERT INTO users (email, password, username , admin) VALUES(?,?,?,?)",
      [req.body.email, req.body.password, req.body.username = req.body.email, req.body.admin])
      .then(() => {
        res.status(200).json(("user created successfully"));
      })
      .catch(err => { console.log(err); next(); })

  }

  static async update(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "UPDATE users SET email = ?, password = ?, admin = ? WHERE id = ?",
      [req.body.email, req.body.password, req.body.username, req.body.admin, req.body.id])
      .then((result => res.status(201).json("updated user" + "SELECT LAST UPDATED ID()")))
      .catch(err => console.log(err));
  }

  static async remove(req: Request, res: Response, next: NextFunction) {
    await pool.execute<IUser & RowDataPacket[]>(
      "DELETE FROM users WHERE id = ?",
      [req.params.id]);

  }
}

export { User };

I am wondering to know how should I close the pool connection? I tried to add .finally(() => pool.end()); at the end of the each function (as you can see one of them I have commented outin readAll() function) but it closes the pool and I get the pool is close error message for other requests.

So hw should I close a pool correctly?

EDIT: This is /config/db file:

import mysql from "mysql2";

const pool =  mysql.createPool(
  {
  host : (process.env.DB_HOST),
  user : (process.env.DB_USER),
  password:  (process.env.DB_PASSWORD ),
  database: (process.env.DB_NAME ),
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
  }).promise();


问:
I have two overlapping scenes, how do I make the top one transparent relative to the bottom one？
I want to add an axis in the corner of the scene. I use the method of scene cropping but the scene of the axes is not transparent relative to the model.

I put an axis in the corner of the scene.
Now,it's like this:

I set alpha property to the renderer，but it's only transparent relative to the background.

```<code> this.renderer = new THREE.WebGLRenderer({
      alpha: true,
      canvas: this.canvas,
      antialias: true,
    });
</code>```

I want it to look like this:

```<code>// main scene
        this.renderer.render(this.scene, this.camera); // scene1
        this.camera2.position.copy(this.camera.position);
        this.camera2.lookAt(this.scene2.position);
        this.camera2.up.set(
          this.camera.up.x,
          this.camera.up.y,
          this.camera.up.z
        );
        // inset scene
        this.renderer.clearDepth();
        this.renderer.setScissorTest(true);
        this.renderer.setScissor(10, 40, insetWidth, insetHeight);
        this.renderer.setViewport(10, 40, insetWidth, insetHeight);
        this.renderer.setClearColor(0xffffff, 0);
        this.renderer.render(this.scene2, this.camera2); // scene2
        this.renderer.setScissorTest(false);
</code>```

Body:
I want to add an axis in the corner of the scene. I use the method of scene cropping but the scene of the axes is not transparent relative to the model.

I put an axis in the corner of the scene.
Now,it's like this:

I set alpha property to the renderer，but it's only transparent relative to the background.

 this.renderer = new THREE.WebGLRenderer({
      alpha: true,
      canvas: this.canvas,
      antialias: true,
    });

I want it to look like this:

// main scene
        this.renderer.render(this.scene, this.camera); // scene1
        this.camera2.position.copy(this.camera.position);
        this.camera2.lookAt(this.scene2.position);
        this.camera2.up.set(
          this.camera.up.x,
          this.camera.up.y,
          this.camera.up.z
        );
        // inset scene
        this.renderer.clearDepth();
        this.renderer.setScissorTest(true);
        this.renderer.setScissor(10, 40, insetWidth, insetHeight);
        this.renderer.setViewport(10, 40, insetWidth, insetHeight);
        this.renderer.setClearColor(0xffffff, 0);
        this.renderer.render(this.scene2, this.camera2); // scene2
        this.renderer.setScissorTest(false);


问:
shared memory allocation
Where the actual shared memory allocated, some online stuff saying it is allocated in
process address space and some are saying in kernel space. Where is it actually allocated?</p>

Title: shared memory allocation


问:
Wrong Titles and Description displaying in Google Search Results for ReactJs App
For Google SEO we have implemented Server Side Rendering for React Js (using nodejs) and provided Title and Description in Meta Tags but somehow google is showing wrong title and description.

We tried Server Side Rendering with Node Js and whenever we inspected in https://metatags.io/ and other 3rd party apps but we are getting perfect results but google is not picking the right title as well as description.

Any other suggestions or improvements are welcome

Thanks