首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js 10需要(‘...’)来自node_modules的速度非常慢

基础概念

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。它允许开发者使用 JavaScript 编写服务器端代码。Node.js 的模块系统允许开发者通过 requireimport 语句来引入外部模块。

问题描述

当你在 Node.js 10 中使用 require('...')node_modules 引入模块时,速度非常慢。

原因

  1. 模块解析时间:Node.js 在解析模块路径时,需要遍历 node_modules 目录,查找对应的模块文件。如果 node_modules 目录结构复杂或模块数量庞大,这个过程会变得非常耗时。
  2. 缓存机制:Node.js 会对已加载的模块进行缓存,但在某些情况下,缓存机制可能不够高效,导致重复加载模块时速度仍然很慢。
  3. 文件系统性能:文件系统的读取速度也会影响模块加载的速度,特别是在网络文件系统(如 NFS)或磁盘性能较差的情况下。

解决方案

1. 使用 npm ci 替代 npm install

npm ci 命令会严格根据 package-lock.json 文件来安装依赖,而不是根据 package.json 文件。这样可以确保依赖的一致性和安装速度。

代码语言:txt
复制
npm ci

2. 使用 yarn

Yarn 是一个快速、可靠、安全的依赖管理工具。它通过缓存机制和并行安装来提高安装速度。

代码语言:txt
复制
yarn install

3. 优化 node_modules 结构

确保 node_modules 目录结构清晰,避免不必要的嵌套和冗余模块。可以通过以下命令来清理和优化:

代码语言:txt
复制
npm dedupe

4. 使用 require.resolve 预解析模块路径

在应用启动时,可以使用 require.resolve 预解析常用模块的路径,减少运行时的解析时间。

代码语言:txt
复制
const path = require('path');
const modulePath = require.resolve('some-module');

5. 使用 --preserve-symlinks 选项

在 Node.js 中使用 --preserve-symlinks 选项可以避免对符号链接的重复解析,从而提高模块加载速度。

代码语言:txt
复制
node --preserve-symlinks index.js

参考链接

通过以上方法,可以有效提高 Node.js 中从 node_modules 引入模块的速度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【译】10Node.js 最佳实践:来自 Node 专家启示

10Node.js 最佳实践:来自 Node 专家启示,由客座作者 Azat Mardan 撰写。SitePoint 特邀嘉宾文章旨在为您带来来自网络社区著名作家和演讲者高质量优质内容。...在我之前文章 10 Tips to Become a Better Node Developer in 2017 中,我介绍了 10Node.js 建议、技巧和技术,您可以将它们应用到您代码中...这篇文章继续介绍 10 个最佳实践,以帮助您将 Node 技能提升到一个新水平。.../node_modules/.bin/mocha 或将此行添加到您 bash/zsh 配置文件(PATH!): export PATH="....我在那里列出了主要中间件模块。例如, npm i compression -S 将通过缩小响应来降低下载速度

2.1K20

来自大数据反思:需要你读懂10个小故事

这个应用程序,可利用智能手机中内置速度传感器,来检查出街道上坑洼之处——在路面平稳地方,传感器加速度值小,而在坑坑洼洼地方,传感器加速度值就大。...,“路灯”就好比我们要达到这个目标的测量“标尺”,如果这个标尺导向有问题,顺着这个标尺导引,想要找到心仪“钥匙”,是非常困难!...这样下去,算法无论怎么修补,都无法改变其愈发不准确命运。 对GFT预测更猛烈攻击,来自著名期刊《科学》【13】。...更为实际情况是,孕妇之所以能收到这些购物券,是因为Target给非常多客户都邮寄了这种购物券。...Uber利用数据分析技术,专门筛选出那些在晚上10点到凌晨4点之间用车服务,并且这些客户会在四到六小时之后(这段时间足够完成一场快速RoG),在距离上一次下车地点大约1/10英里(约160米)以内地方再次叫车

95990
  • 来自大数据反思:需要你读懂10个小故事

    然而,AI真的强大到不可一世地步吗?众所周知,AI基础是大数据和计算能力,目前AI能力更多来自于计算能力,在和大数据相关一些领域如自然语言处理、模式识别、知识发现等领域AI还有很长路要走。...这个应用程序,可利用智能手机中内置速度传感器,来检查出街道上坑洼之处——在路面平稳地方,传感器加速度值小,而在坑坑洼洼地方,传感器加速度值就大。...”,如果这个标尺导向有问题,顺着这个标尺导引,想要找到心仪“钥匙”,是非常困难!...这样下去,算法无论怎么修补,都无法改变其愈发不准确命运。 对GFT预测更猛烈攻击,来自著名期刊《科学》【13】。...Uber利用数据分析技术,专门筛选出那些在晚上10点到凌晨4点之间用车服务,并且这些客户会在四到六小时之后(这段时间足够完成一场快速RoG),在距离上一次下车地点大约1/10英里(约160米)以内地方再次叫车

    1.3K80

    来自大数据反思:需要你读懂10个小故事

    在众声喧哗之中,我们需要冷静审慎地思考上述问题。 太多“唐僧式”说教,会让很多人感到无趣。...下文分享了10个从“天南地北”收集而来小故事(或称段子),从这些小故事中,可对热炒大数据反思一下,这或许能让读者更加客观地看待大数据。...这个应用程序,可利用智能手机中内置速度传感器,来检查出街道上坑洼之处——在路面平稳地方,传感器加速度值小,而在坑坑洼洼地方,传感器加速度值就大。...市政厅全职工作人员就无需亲自巡查道路,而是打开电脑,就能一目了然看到哪些道路损坏严重,哪里需要维修,如图3所示。...“路灯”就好比我们要达到这个目标的测量“标尺”,如果这个标尺导向有问题,顺着这个标尺导引,想要找到心仪“钥匙”,是非常困难

    1.1K100

    来自大数据反思:需要你读懂10个小故事

    这个应用程序,可利用智能手机中内置速度传感器,来检查出街道上坑洼之处——在路面平稳地方,传感器加速度值小,而在坑坑洼洼地方,传感器加速度值就大。...这样下去,算法无论怎么修补,都无法改变其愈发不准确命运。 对GFT预测更猛烈攻击,来自著名期刊《科学》【13】。...更为实际情况是,孕妇之所以能收到这些购物券,是因为Target给非常多客户都邮寄了这种购物券。...Uber利用数据分析技术,专门筛选出那些在晚上10点到凌晨4点之间用车服务,并且这些客户会在四到六小时之后(这段时间足够完成一场快速RoG),在距离上一次下车地点大约1/10英里(约160米)以内地方再次叫车...[10] 李国杰. 大数据研究科学价值[J].

    1.1K20

    Node.js 入门你需要知道 10 个问题

    Node.js 不是一个新语言,也不仅仅是一个基于 JavaScript 框架,它基于 Chrome JavaScript 运行时,因此代码编写和执行与浏览器非常相似。...关于 Libuv 学习,可以参考 libuv中文教程 V8 引擎 来自于谷歌:“V8 是谷歌开源高性能 JavaScript 引擎”,使用 C++ 开发,并在谷歌浏览器中使用。...这里有一点我们需要注意,我们必须要有一个 package.json 文件或 node_modules 目录安装模块到本地。...点击下面 Source 阅读更多关于 NPM 相关内容 Q10: Node.js 可以做什么? 10Node.js 应用场景?...Node.js 可以做 Web 服务端、命令行工具 (Java, PHP 可以做 JS 也可以做),现在让我们看下 Node.js 10 个应用场景: Web 开发: Express + EJS

    1.3K40

    Node.js 入门你需要知道 10 个问题

    本文为您分享「Node.js 入门你需要知道 10 个问题」这些问题可能也是面试中会被问到,当然问题不仅仅是这 10 道,因此,最近开源了一个新项目 https://github.com/Q-Angelo...Node.js 不是一个新语言,也不仅仅是一个基于 JavaScript 框架,它基于 Chrome JavaScript 运行时,因此代码编写和执行与浏览器非常相似。...关于 Libuv 学习,可以参考 libuv中文教程 V8 引擎 来自于谷歌:“V8 是谷歌开源高性能 JavaScript 引擎”,使用 C++ 开发,并在谷歌浏览器中使用。...这里有一点我们需要注意,我们必须要有一个 package.json 文件或 node_modules 目录安装模块到本地。...10Node.js 应用场景?

    1.2K20

    神器推荐:在浏览器分析 npm 包

    了解软件包背后作者、开发人员。 对于包作者,pkg-size 可以帮助你: 评估安装瓶颈来提高速度,对于加载 npx CLI 工具尤其重要。...即使在网速或存储空间低等不理想条件下,也能确保无缝下载。 最大限度地减少依赖性以降低破坏性更改或恶意代码等风险。 这个网站可以完全在你浏览器中运行,包括从安装 npm 包到打包它们完整过程!...这个工具核心是基于 WebContainers (StackBlitz 一项技术,允许在浏览器中运行 Node.js )构建,可以运行 npm 并直接在浏览器中安装包。...然后它会分析 node_modules 目录以深入了解已安装软件包及其统计信息。 网站是纯静态(不需要后端)托管在 Vercel 上。...依赖关系洞察:pkg-size 可以显示安装了什么以及为什么安装,为理解结果提供了有价值信息,对于识别大型或重复依赖关系非常有用,它还可以帮助开发者发现新软件包。

    64820

    Bun 1.0 发布了,以后 Node.js 项目谁还用 Webpack 与 pnpm?!是时候祭出大杀器 Bun了(一)

    因为工程化 Node.js 项目要进行编译和捆绑,在此之前,需要掌控项目中一切资源。这些加载器在配置文件中都有特定配置格式,要正解编写它们,基本每次都需要查文档或谷歌。...当我们安装一个包时,不只是会安装它本身,它依赖包也会自动安装,所以项目的 node_modules 目录(包本地安装目录)经常有很多子目录,一个 Node.js 项目的总体积达到几百甚至上千 MB...8,下载、安装速度,是 Node.js 项目长期以来,自诞生以后,一直存在,一直被开发者诟病缺点。...pnpm 9,但是,pnpm 下载速度还是,它只是在一定程度上改善了原本就很慢下载速度,这一点从上面的下载速度对比上可以看出来。...rf node_modules package-lock.json rm -rf node_modules bun.lockb(这一步其实不需要) 每个包管理工具lock文件都不一样,这也是为了不冲突

    2.1K20

    npm包管理器基本使用

    下载node.js 首先去百度搜索Node.js去下载 Node.js简介 NPM是随同NodeJS一起安装包管理工具,能解决NodeJS代码部署上很多问题,常见使用场景有以下几种: 允许用户从...g 使用Npm装模块 npm 安装 Node.js 模块语法格式如下: $ npm install for example: 比如说,我想写一个页面,但需要引用bootstrap...它会自动安装jquery(默认为最新版本),也许你需要别的版本jquery,那么你需要输入npm install jquery@版本号 回车后会自动安装,生成一个名为node_modules文件,...图为引用了bootstrap 更新包 $ npm update 包名 即可更新包到最新版本 使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 官方镜像是非常,这里推荐使用淘宝 NPM 镜像...淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

    59610

    快速加速计算机方法,电脑快速解决办法 四种方法电脑速度变快10

    大家好,又见面了,我是你们朋友全栈君。 电脑这种东西刚买来时候用起来“刷刷”,随着使用时间增加,电脑就会开始莫名变卡、变慢。...作为一个资深电脑大神,电脑这种问题根本就不能算电脑问题,让电脑变快方法有很多,而且操作都巨简单,下面就一起来看看吧。...电脑快速解决办法 一、系统常规优化 1、你可以关闭系统属性中特效,点击开始,控制面板,系统,高级,性能,设置在视觉效果中,设置为调整为最佳性能,确定。...2、在系统属性里打开硬件选项,打开设备管理器,IDE ATA/ATAPI控制器,次要IDE通道,高级设置,把设备1和2传送模式改为“DMA(若可用)” 3、设置预读改善开机速度,打开注册表,电脑是PIII...小编结语:电脑卡一般就是电脑后台运行程序过多和垃圾文件过多,对下载软件、文件进行归类能很好解决电脑问题。尤其是C盘,不要把文件或者安装游戏放在C盘,不然会卡死你。

    2.5K30

    nodejs安装与环境变量配置

    Node对一些特殊用例进行优化,提供替代API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript速度非常快,性能非常好。...该模型以可扩展方式简化了对资源访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件用户,更有一种似曾相识感觉。...,npm作用就是对Node.js依赖包进行管理,也可以理解为用来安装/卸载Node.js需要东西 nodejs(zip)方式安装 解压之后直接把名字修改为node-v10.15.3,里面的目录往前提一级...此处说明下:新版Node.js已自带npm,安装Node.js时会一起安装,npm作用就是对Node.js依赖包进行管理,也可以理解为用来安装/卸载Node.js需要东西 环境配置 写在前面的话....github引用日期2012-09-18 NodeJS无所不能:细数十个令人惊讶NodeJS开源项目 .TechTarget引用日期2015-10-31 [服务器端JavaScript脚本新秀:Node.js

    5.7K10

    加速 Webpack

    大多数人在使用 Webpack 过程中都会遇到构建速度问题,在项目大时显得尤为突出,这极大影响了我们开发体验,降低了我们开发效率。...通过多进程并行处理 由于有大量文件需要解析和处理,构建是文件读写和计算密集型操作,特别是当文件数量变多后,Webpack 构建问题会显得严重。...运行在 Node.js 之上 Webpack 是单线程模型,也就是说 Webpack 需要处理任务需要一件件挨着做,不能多个事情一起做。...以上两件事情虽然对于处理一个文件非常快,但是当项目大了以后文件量会变非常多,这时候构建速度问题就会暴露出来。 虽然以上两件事情无法避免,但需要尽量减少以上两件事情发生,以提高速度。.../node_modules 中找,再没有就去 ../../node_modules 中找,以此类推,这和 Node.js 模块寻找机制很相似。 当安装第三方模块都放在项目根目录下 .

    1.9K50

    Node.js学习笔记——模块加载机制及npm指令详解

    这家公司旗下有一个非常著名网站 https://www.npmjs.com/,它是全球最大包共享平台,你可以从这个网站上搜索到任何你需要包,只要你有足够耐心!...如 项目的名称、版本号、描述等 项目中都用到了哪些包 哪些包只在开发期间会用到 那些包在开发和部署时都需要用到 一次性安装所有的包 拿到一个剔除了 node_modules 项目之后,需要先把所有的包下载到项目中...//完整写法 包名和--save-dev顺序不重要 npm install 包名 --save-dev 或 //常用简写 npm i 包名 -D 解决下包速度问题 npm 下包时候,默认从国外...https://registry.npmjs.org/ 服务器进行下载,可能会 使用国内镜像服务器-淘宝,大幅改善下载速度 切换npm 下包镜像源 npm config get registry...则 Node.js 会从当前模块父目录开始,尝试从 /node_modules 文件夹中加载第三方模块 ​ ●如果没有找到对应第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统根目录

    1.1K20

    Node.js】npm与包【万字教学~超超超详细】

    devDependencies节点         解决下包速度问题                 为什么下包速度                 淘宝NPM镜像服务器                ...注意:Node.js包都是免费且开源,不需要付费即可免费下载使用。        ...这家公司旗下有一个非常著名网站,全球最大包共享平台 你可以从这个网站上搜索到任何你需要包,只要你有足够耐心!...当我们拿到一个提出了node_modules项目之后,启动项目会报错,提示没有所需要包,苏一在启动项目之前。...npm install 包名 -D 只需要在结尾加个-D就可以将包安装在devDependencies中             解决下包速度问题                 为什么下包速度

    1K20

    前端核心工具:yarn、npm、cnpm三者如何优雅在一起使用 ?

    ,更是考虑在Node环境中无法被垃圾回收问题 老规矩 先看原理 npm npm 是Node.js 能够如此成功主要原因之一。...npm必须为所有使用到模块构建一个完整依赖关系树,这是一个耗时操作,是npm安装速度一个很重要原因。 想当然以为每次运行npm install命令时,NPM都得从互联网上下载所有内容。...来自官网:“这是一个完整 npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”...(作者曾经在一个上百个依赖包项目中使用npm丢包过,代价非常大,泪水不自觉掉下来) 首先看一次非常失败包下载 竟然是从全局读取资源(不配置webpack别名是因为就这一个路径这么长) image...速度快主要来自以下两个方面: 并行安装:无论 npm 还是Yarn在执行包安装时,都会执行一系列任务。

    1.9K40

    加速Webpack-缩小文件搜索范围

    以上两件事情虽然对于处理一个文件非常快,但是当项目大了以后文件量会变非常多,这时候构建速度问题就会暴露出来。 虽然以上两件事情无法避免,但需要尽量减少以上两件事情发生,以提高速度。.../node_modules 中找,再没有就去 ../../node_modules 中找,以此类推,这和 Node.js 模块寻找机制很相似。 当安装第三方模块都放在项目根目录下 ....以 isomorphic-fetch 为例,它是 fetch API 一个实现,但可同时用于浏览器和 Node.js 环境。...Node.js 中通过 http 模块实现。...---- 以上就是所有和缩小文件搜索范围相关构建性能优化了,在根据自己项目的需要去按照以上方法改造后,你构建速度一定会有所提升。 本实例提供项目完整代码

    1.1K10
    领券