我遇到了一个奇怪的问题 - 显然某些 Node.js 模块具有如此 深 文件夹层次结构 以至于 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
文件夹或仅包含运行时实际需要的内容?( Node 模块通常包含 test
文件夹等,我们不需要部署。)还有其他想法如何解决它?不幸的是,不使用 Windows 不是一种选择 :)
最佳答案
只是添加到这个...帮助我的另一件事是使用 npm ls
列出所有已安装的模块。
这将为您提供模块和版本树...从那里很容易识别哪些是重复的... npm dedupe
没有为我做任何事情。我不确定这是错误还是什么(Node v 10.16)
因此,一旦您识别出重复的模块,请使用 npm install dupemodule@1.2.3 --save-dev
将其安装到根 node_module 目录。 版本很重要。
之后,我清除了我的 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 树。
关于node.js - 如何在 Windows 上部署具有深度 node_modules 结构的 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318364/