我遇到了一个奇怪的问题 - 显然某些 Node.js 模块有这样的问题deep文件夹层次结构Windows 复制命令(或 PowerShell 的Copy-Item
当路径长度超过 250 个字符时,会出现臭名昭著的“路径太长”错误。
例如,这是单个 Node 模块可以创建的文件夹层次结构:
node_modules\nodemailer\node_modules\simplesmtp\node_modules\
xoauth2\node_modules\request\node_modules\form-data\node_modules\
combined-stream\node_modules\delayed-stream\...
这看起来很疯狂,但却是 Node 模块的现实。
我们需要在部署期间使用复制粘贴(我们没有使用像 Heroku 这样的“聪明”目标平台,其中可以选择 Git 部署),这对 Windows 来说是一个严重的限制。
是否有一个 npm 命令或其他可以压缩的命令node_modules
文件夹或者可能只包含运行时实际需要的内容?(节点模块通常包含test
文件夹等,我们不需要部署。)还有其他想法如何解决它吗?不幸的是,不使用 Windows 不是一个选择:)
只是为了补充这一点...另一件事帮助我列出了所有已安装的模块npm ls
.
这将为您提供模块和版本树...从那里很容易识别哪些是重复的...npm dedupe
没有为我做任何事。我不确定这是一个错误还是什么(Node v 10.16)
因此,一旦您识别出重复的模块,请使用以下命令将其安装到根node_module目录中npm install [email protected] /cdn-cgi/l/email-protection --save-dev
. 版本很重要。
之后,我清除了我的node_modules目录并做了一个新的npm install
.
简洁版本
-
npm ls
获取所有已安装模块的列表。
- 查看这些模块并识别重复的模块(版本很重要)
-
npm install module@version --save-dev
将这些模块安装在根 node_modules 目录中并更新 package.json。
-
rmdir node_modules
删除node_modules目录。
-
npm install
获取依赖项的新副本。
一旦我这样做了,一切就干净多了。
我还建议对您的 package.json 文件进行注释,以显示哪些文件被删除以压平 node_modules 树。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)