吐个 Nodejs 的槽
吐个 Nodejs 的槽
上次折腾 py 因为墙的问题弄了好久。这次弄 node.js 换了阿里的镜像结果 install 的依然各种卡各种报错。 神奇的是再执行一次一般能成功,或者清下缓存。
nodejs 的依赖管理已经变成玄学了,npm 和 yarn 的行为可能不一致。可能会出现 --> npm 成功 yarn 报错或 npm 报错 yarn 成功。
全局代理就没问题了
一般删掉 packgage-lock.json 就好了,这个文件存在的意义大概是跑分用的
确实这是个玄学问题,用 Node 做开发语言一年半了,没少受 npm 依赖管理的毒害,有时候气得直冒汗,他娘的就是没办法…
package-lock.json 是为了私有 npm 源用吧?
比黑洞还深的 node_modules 不吐槽一下么……这时候就想起二进制分发的好了
哈哈哈正在学 node 表示害怕
npm set registry https://registry.npm.taobao.org <br> && yarn config set registry https://registry.npm.taobao.org <br> && npm set disturl https://npm.taobao.org/dist <br> && npm set chromedriver_cdnurl http://cdn.npm.taobao.org/dist/chromedriver <br> && npm set operadriver_cdnurl http://cdn.npm.taobao.org/dist/operadriver <br> && npm set phantomjs_cdnurl http://cdn.npm.taobao.org/dist/phantomjs <br> && npm set fse_binary_host_mirror https://npm.taobao.org/mirrors/fsevents <br> && npm set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass <br> && npm set electron_mirror http://cdn.npm.taobao.org/dist/electron/
能解决 80 的问题
换个 vpn 上全局代理就再也没遇过这些问题了
node 的包管理就是一个灾难,各种难受
上一个项目刚刚还成功,新开一个就不能用了
第一次 install 失败,第二次成功,基本是坏的
说实话,从来没遇到任何依赖安装的问题,登云梯前提下。下载不了依赖不是 npm 和 yarn 的问题。
node 好歹还有官方镜像,golang 在国内连个镜像都没有。。。
确实玄学,被这个坑了一个下午,最后用 yarn 勉强能用
你这个锅怕是 npm 不背。国内这些源本来就有问题,官方源很少有问题。
一些人还没深入了解 npm 的模块管理机制,就开始吐槽 npm,就不能花点时间看看 npm 的模块管理机制是怎么样的?不花点时间翻翻墙?黑洞般的 node_modules 那是什么年代了?
说官方源稳定的可以看一下 https://status.npmjs.org/history
#11 这个比较坑,第一次失败会出现模块安装一半的情况,但是第二次安装会认为这个模块已经安装成功了,不会再次安装
谁让 npm 包是个文件夹而不是一个类似于 jar 的 zip 呢, 打个包就能解决很多问题了。
可以贴下报错的错误代码么。
这个是深有感触
当然,下面是一个针对Node.js可能的槽点进行专业回复的示例,同时尽量结合代码展示:
Node.js作为一个流行的JavaScript运行时环境,确实在某些方面存在可以改进的地方。以下是一些常见的槽点以及我的看法:
-
单线程模型: Node.js基于事件驱动的非阻塞I/O模型,虽然适合I/O密集型任务,但在处理CPU密集型任务时可能表现不佳。这可以通过使用
cluster
模块来创建多个进程,实现多核利用,但这也增加了复杂度。const cluster = require('cluster'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) { cluster.fork(); } } else { // Worker can share any TCP connection // In this case it is an HTTP server require('./app.js'); }
-
回调地狱: 异步编程中过多的嵌套回调可能导致代码难以阅读和维护。虽然Promise和async/await已经大大缓解了这个问题,但在一些旧代码或库中仍然可能遇到。
// 使用async/await避免回调地狱 async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log(data); } catch (error) { console.error('Error fetching data:', error); } }
虽然Node.js有这些槽点,但其强大的生态系统、丰富的模块和活跃的社区使得它仍然是许多开发者的首选。