Contact me: hankecnc@gmail.com

树莓派 pi3a+ 或 b+ 的正确安装指南 #726

推推 grbl 3年前 (2023-02-03) 311次浏览
关闭
12 个任务中的第 4 个
BenSeventy9 开启了这个问题 2021 年 11 月 23 日 · 1条评论
关闭
12 个任务中的第 4 个

树莓派 pi3a+ 或 b+ 的正确安装指南#726

BenSeventy9 开启了这个问题 2021 年 11 月 23 日 · 1条评论

评论

树莓派 pi3a+ 或 b+ 的正确安装指南 #726
本七十 评论了 2021 年 11 月 23 日  

在阅读了很多安装说明并且几乎所有安装说明都失败后,我明白了!我想和你分享我过去的 4 个小时:

2021-05-07-raspios-buster-armhf-lite.img

没有更新也没有升级

卷曲-sL https://deb.nodesource.com/setup_10.x | sudo -E bash –
sudo apt install -y nodejs build-essential git
sudo npm install -g npm@6.14.15
sudo npm install -g cncjs@latest –unsafe-perm
sudo npm install -g pm2 pm2
startup
sudo env PATH= $PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi –hp /home/pi pm2
start $(which cncjs) — –port 8000 -m /tinyweb:/ home/pi/tinyweb pm2
保存pm2
列表

须藤重启

版本

  • CNCjs:1.9.23
  • 节点.js:10.24.1
  • NPM:6.14.15

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • Grbl
  • 冰沙
  • TinyG/g2核心

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux

仍然有成吨的垃圾:

sudo npm install -g cncjs@latest --unsafe-perm
npm WARN deprecated @babel/polyfill@7.4.4: ?? This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
npm WARN deprecated bcrypt-nodejs@0.0.3: bcrypt-nodejs is no longer actively maintained. Please use bcrypt or bcryptjs. See https://github.com/kelektiv/node.bcrypt.js/wiki/bcrypt-vs-brypt.js to learn more about these two options
npm WARN deprecated debug@4.1.1: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
npm WARN deprecated i18next-express-middleware@1.8.2: replaced by i18next-http-middleware
npm WARN deprecated i18next-node-fs-backend@2.1.3: replaced by i18next-fs-backend
npm WARN deprecated i18next-xhr-backend@2.0.1: replaced by i18next-http-backend
npm WARN deprecated uuid@3.3.3: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated core-js@2.6.12: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated core-js@1.2.7: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated i18next-express-middleware@1.0.11: replaced by i18next-http-middleware
npm WARN deprecated i18next-node-fs-backend@1.0.0: replaced by i18next-fs-backend
/usr/bin/cnc -> /usr/lib/node_modules/cncjs/bin/cnc
/usr/bin/cncjs -> /usr/lib/node_modules/cncjs/bin/cncjs

> @serialport/bindings@9.2.7 install /usr/lib/node_modules/cncjs/node_modules/@serialport/bindings
> prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild

prebuild-install WARN install No prebuilt binaries found (target=10.24.1 runtime=node arch=arm libc= platform=linux)
make: Entering directory '/usr/lib/node_modules/cncjs/node_modules/@serialport/bindings/build'
  CXX(target) Release/obj.target/bindings/src/serialport.o
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Open(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:78:69: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Open, (uv_after_work_cb)EIO_AfterOpen);
                                                                     ^~~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Update(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:135:71: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Update, (uv_after_work_cb)EIO_AfterUpdate);
                                                                       ^~~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Close(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:175:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Close, (uv_after_work_cb)EIO_AfterClose);
                                                                      ^~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Flush(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:215:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Flush, (uv_after_work_cb)EIO_AfterFlush);
                                                                      ^~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Set(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:271:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Set, (uv_after_work_cb)EIO_AfterSet);
                                                                    ^~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Get(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:316:68: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Get, (uv_after_work_cb)EIO_AfterGet);
                                                                    ^~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE GetBaudRate(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:366:76: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_GetBaudRate, (uv_after_work_cb)EIO_AfterGetBaudRate);
                                                                            ^~~~~~~~~~~~~~~~~~~~
../src/serialport.cpp: In function ‘Nan::NAN_METHOD_RETURN_TYPE Drain(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/serialport.cpp:412:70: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
   uv_queue_work(uv_default_loop(), req, EIO_Drain, (uv_after_work_cb)EIO_AfterDrain);
                                                                      ^~~~~~~~~~~~~~
../src/serialport.cpp: At global scope:
../src/serialport.cpp:433:28: warning: unnecessary parentheses in declaration of ‘ToParityEnum’ [-Wparentheses]
 SerialPortParity NAN_INLINE(ToParityEnum(const v8::Local<v8::String>& v8str)) {
                            ^
../src/serialport.cpp:452:30: warning: unnecessary parentheses in declaration of ‘ToStopBitEnum’ [-Wparentheses]
 SerialPortStopBits NAN_INLINE(ToStopBitEnum(double stopBits)) {
                              ^
In file included from ../../../nan/nan.h:58,
                 from ../src/./serialport.h:13,
                 from ../src/serialport.cpp:1:
/root/.cache/node-gyp/10.24.1/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/root/.cache/node-gyp/10.24.1/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/serialport.cpp:486:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(serialport, init);
 ^~~~~~~~~~~
In file included from /root/.cache/node-gyp/10.24.1/include/node/node.h:63,
                 from ../../../nan/nan.h:58,
                 from ../src/./serialport.h:13,
                 from ../src/serialport.cpp:1:
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/root/.cache/node-gyp/10.24.1/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../../nan/nan_object_wrap.h:65:61:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  CXX(target) Release/obj.target/bindings/src/serialport_unix.o
In file included from /root/.cache/node-gyp/10.24.1/include/node/node.h:63,
                 from ../../../nan/nan.h:58,
                 from ../src/serialport.h:13,
                 from ../src/serialport_unix.cpp:2:
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/root/.cache/node-gyp/10.24.1/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../../nan/nan_object_wrap.h:65:61:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
../src/serialport_unix.cpp: In function ‘int setup(int, OpenBaton*)’:
../src/serialport_unix.cpp:179:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1005 [-Wformat-truncation=]
     snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/serialport_unix.cpp:179:13: note: ‘snprintf’ output 20 or more bytes (assuming 1043) into a destination of size 1024
     snprintf(data->errorString, sizeof(data->errorString), "Error %s Cannot open %s", strerror(errno), data->path);
     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/serialport_unix.cpp: In function ‘void EIO_Open(uv_work_t*)’:
../src/serialport_unix.cpp:89:60: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1003 [-Wformat-truncation=]
     snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/serialport_unix.cpp:89:13: note: ‘snprintf’ output 22 or more bytes (assuming 1045) into a destination of size 1024
     snprintf(data->errorString, sizeof(data->errorString), "Error: %s, cannot open %s", strerror(errno), data->path);
     ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/bindings/src/poller.o
In file included from /root/.cache/node-gyp/10.24.1/include/node/node.h:63,
                 from ../../../nan/nan.h:58,
                 from ../src/poller.cpp:1:
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/root/.cache/node-gyp/10.24.1/include/node/node_object_wrap.h:84:78:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.cache/node-gyp/10.24.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../../nan/nan_object_wrap.h:65:61:   required from here
/root/.cache/node-gyp/10.24.1/include/node/v8.h:9502:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
  CXX(target) Release/obj.target/bindings/src/serialport_linux.o
  SOLINK_MODULE(target) Release/obj.target/bindings.node
  COPY Release/bindings.node
make: Leaving directory '/usr/lib/node_modules/cncjs/node_modules/@serialport/bindings/build'

> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/bmp/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js:
> https://opencollective.com/core-js
> https://patreon.com/zloirock
> https://paypal.me/zloirock
> bitcoin: bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/core/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/custom/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/gif/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/jpeg/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-blit/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-blur/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-circle/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-color/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-contain/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-cover/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-crop/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-displace/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-dither/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-fisheye/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-flip/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-gaussian/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-invert/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-mask/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-normalize/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-print/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-resize/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-rotate/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-scale/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-shadow/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugin-threshold/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/plugins/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/png/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/tiff/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/types/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/@jimp/utils/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> core-js@2.6.12 postinstall /usr/lib/node_modules/cncjs/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> core-js@3.19.1 postinstall /usr/lib/node_modules/cncjs/node_modules/jimp/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> final-form@4.12.0 postinstall /usr/lib/node_modules/cncjs/node_modules/final-form
> node -e "console.log('\u001b[35m\u001b[1mUsing final-form at work? You can now donate to our open collective:\u001b[22m\u001b[39m\n > \u001b[34mhttps://opencollective.com/final-form/donate\u001b[0m')"

Using final-form at work? You can now donate to our open collective:
 > https://opencollective.com/final-form/donate

> react-final-form@3.7.0 postinstall /usr/lib/node_modules/cncjs/node_modules/react-final-form
> node ./scripts/postinstall.js || exit 0

Use react-final-form at work? Consider supporting our development efforts at opencollective.com/final-form

> styled-components@3.4.10 postinstall /usr/lib/node_modules/cncjs/node_modules/styled-components
> node ./scripts/postinstall.js || exit 0

Use styled-components at work? Consider supporting our development efforts at opencollective.com/styled-components

> cncjs@1.9.23 postinstall /usr/lib/node_modules/cncjs
> opencollective postinstall


                                                                 Thanks for installing cncjs
                                                        Please consider donating to our open collective
                                                               to help us maintain this package.

                                                                   Number of contributors: 0
                                                                     Number of backers: 20
                                                                      Annual budget: $673
                                                                    Current balance: $1,525

                                                    Donate: https://opencollective.com/cncjs/donate

npm WARN react-i18next@10.7.0 requires a peer of react@>= 16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-datepicker@1.5.0 requires a peer of react@^16.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN react-datepicker@1.5.0 requires a peer of react-dom@^16.0.0 but none is installed. You must install peer dependencies yourself.

+ cncjs@1.9.23
added 807 packages from 609 contributors in 401.915s
树莓派 pi3a+ 或 b+ 的正确安装指南 #726

所有这些垃圾都是当一个人使用 Node.js 并且没有花费 100% 的时间来追查不同版本的包的问题时发生的。cncjs 直接或间接使用了 1363 个不同的第三方包,总共包含 41254 个文件。当作者经常更改它们时,您是否知道让许多不同的东西保持最新是多么困难?将其与您和其他数千名用户为 cncjs 支付的金额 – 0 美元进行比较,您可能会理解为什么 cncjs 没有得到积极维护。