节点npm windows文件路径太长,无法安装软件包
形势 我想在Windows托管的开发环境中使用gulp和相关的前端工具链。我在尝试使用浏览器同步之类的gulp插件时遇到了麻烦,因为node_modules文件夹图呈扇形展开,使得windows文件路径过长,无法复制文件。我想要一个实用的方法来处理这个问题,不管节点社区将来可能提供或不提供什么来改善Windows上的npm可用性 2个问题节点npm windows文件路径太长,无法安装软件包,windows,node.js,npm,filepath,Windows,Node.js,Npm,Filepath,形势 我想在Windows托管的开发环境中使用gulp和相关的前端工具链。我在尝试使用浏览器同步之类的gulp插件时遇到了麻烦,因为node_modules文件夹图呈扇形展开,使得windows文件路径过长,无法复制文件。我想要一个实用的方法来处理这个问题,不管节点社区将来可能提供或不提供什么来改善Windows上的npm可用性 2个问题 是否有一个适用于Windows的npm工作流程能够按照预期的方式工作?“运行命令并安装文件”(例如,与OSX上的npm、Linux上的npm、ruby gem
- 从标准Windows命令提示符运行npm安装在嵌套较深的节点\u模块层次结构上失败
- 根据Joyent的github repo线程,对于以Windows为中心的环境中的开发人员来说,没有任何令人满意的解决办法。(真的吗?)
- NT内核支持最多32767个字符的文件路径长度李>
- Windows API的最大路径限制为260个字符李>
- Windows API处理所有主要Windows Shell等的文件操作,包括:Explorer、CMD、Powershell、MyGit bash等(MS真的吗?NTFS存在多久了?)
- Cygwin支持长文件路径,但由于crlf格式,npm.cmd无法开箱即用。我在npm上尝试了DOS2Unix转换,以使其与Cygwin一起工作,但这似乎还有其他问题
- 在C:\的根目录上创建一个“n”文件夹作为临时区域,因为 这会缩短我的文件夹路径李>
- 在“n”文件夹中运行npm,安装我需要的模块李>
- 启动Cygwin并使用cp将node_modules文件夹复制到目标项目中李>
- 当依赖项发生变化或需要启动新项目时,请清洗并重复
在我遇到的一个线程中提到了向根文件夹的package.json文件添加所有依赖项。尽管这种方法将使文件夹结构扁平化,并防止加载重复的模块,但这种解决方法感觉不自然。它还破坏了npm的可用性、耐用性和生产率,因为安装后您必须手动或使用一些黑客脚本来处理文件和文件夹。这种方法也容易受到符号链接方法最终可能遭受的同样命运的影响 这是一个解决方案 有一些节点模块可以为您平展依赖关系
链接如下:
这(最后)是npm目前正在进行的工作,名称为
多阶段安装
,目标是npm@3
npm
开发负责人Forrest Norvell将在新的一年里花一些时间在Windows上运行,因此请务必在npm
问题跟踪器上创建与Windows相关的问题,这是我最终解决的问题
安装gulp并收到错误后,运行。。。吞咽
当您看到某个软件包出现故障时,请使用--无bin链接
手动安装它
sudo npm install {package} --no-bin-link
其中{package}是有问题的包
在所有这些之后,我在插件“gulp notify”消息中收到一个错误:notify send
这是由于Vagrant的插件问题造成的。您可以关闭通知
export DISABLE_NOTIFIER=true;
或者使用安装插件
祝你好运。。我花了很长时间在这个问题上,甚至在遵循了很多人的建议之后
布兰登我也有同样的问题。扁平化依赖项并不是一个完整的解决方案,因为您可能正在使用依赖于同一依赖模块的不同版本的模块。我发现gulp run模块在扁平化后停止工作(我怀疑这与模块对bin/.bin目录的假设有关)。该死 关于这个问题有很多讨论,但看不到解决方案: 一个对我有效的解决方法是手动添加我的项目不明确需要的依赖项 如果您想确定哪些软件包给您带来了问题,我发现这非常有用。只需提取EXE并运行GUI或命令行应用程序。我发现问题的另一种方法是尝试在VisualStudio中构建,但在没有告诉您哪个目录名太长的情况下失败了 下面是我的解决方法的命令行示例:
mkdir c:\reallylongdirectorywillbreakinwindows
cd c:\reallylongdirectorywillbreakinwindows
npm init
npm install --save-dev grunt-bower-task
PathLengthChecker.exe RootDirectory="C:\reallylongdirectorywillbreakinwindows" MinLength=260
我回来了:
261:C:\reallylongdirectorywillbreakinwindows\node\u modules\grunt bower task\node\u modules\bower\node\u modules\update notifier\node\u modules\latest version\node\u modules\package json\no
de_模块\注册表url\节点_模块\
└─┬ grunt-bower-task@0.4.0
├── async@0.1.22
├─┬ bower@1.3.12
│ ├─┬ update-notifier@0.2.0
│ │ ├─┬ latest-version@0.2.0
│ │ │ └─┬ package-json@0.2.0
│ │ │ └─┬ registry-url@0.1.1
│ │ │ └─┬ npmconf@2.1.1
│ │ │ ├─┬ once@1.3.1
│ │ │ │ └── wrappy@1.0.1
npm install --save-dev npmconf@2.1.1
(now delete the node_modules directory - you may have to use Windows Explorer if you can't do it with rmdir /s)
npm install
PathLengthChecker.exe RootDirectory="C:\reallylongdirectorywillbreakinwindows" MinLength=260