gpt4 book ai didi

node.js - 如何在 Windows 上部署具有深度 node_modules 结构的 Node.js 应用程序?

转载 作者:IT老高 更新时间:2023-10-28 21:48:20 28 4
gpt4 key购买 nike

我遇到了一个奇怪的问题 - 显然某些 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

短版

  1. npm ls 获取所有已安装模块的列表。
  2. 查看这些模块并找出重复的模块(版本很重要)
  3. npm install module@version --save-dev 在根 node_modules 目录中安装这些模块并更新 package.json。
  4. rmdir node_modules 删除 node_modules 目录。
  5. npm install 下载一个新的依赖项副本。

一旦我这样做了,一切就干净多了。

我还建议您评论您的 package.json 文件,以显示哪些文件被删除以展平 node_modules 树。

关于node.js - 如何在 Windows 上部署具有深度 node_modules 结构的 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318364/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com