我遇到了一个奇怪的问题 - 显然一些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 :)
dependencies
的package.json
文件?如果是这样,你可以将其复制并排除node_modules
文件夹,然后使用 npm 命令来进行依赖项的install
或update
。 - Jonathan Lonowskinpm install
,它通过在本地创建一个“部署包”(基本上是一个ZIP文件加一些元数据),然后将其上传到目标机器,在那里进行提取,这样就完成了。所以我需要直接包含node_modules
。 - Borek Bernard