1

在使用 Node Tools for Visual Studio(v1.1,不再是 RC)构建/调试我的 Node 项目时,我突然遇到了这个错误。我使用的是 Visual Studio Community Edition 2015 。我使用 Typescript,并且还有当前最新版本的 Typescript,例如 v1.7.6。

错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Node.js Tools\Microsoft.NodejsTools.targets(119,5): error MSB4018: The "AssignTargetPath" task failed unexpectedly.
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
at Microsoft.Build.Tasks.AssignTargetPath.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
Done building project "BuyCo.njsproj" -- FAILED.

Build FAILED.

检查互联网时,问题似乎与 Node/npm 的 MAXPATH 问题有关。 http://visual2073.rssing.com/chan-25873606/all_p116.html https://nodejstools.codeplex.com/workitem/759 https://nodejstools.codeplex.com/workitem/1340

4

2 回答 2

2

花了我一些时间才知道,但一位朋友建议从 npm 2 迁移到 3。下面是一些细节,这样其他人就不必经历那些可怕的非 Stackoverflow 论坛等:)。

该问题与 Windows MaxPath 有关。最后我设法解决了这个问题

  • 从 npm 2 升级到 npm 3。对于 Windows 用户,请查看此处
  • 然后当然删除我项目中的所有 npm 包rm -r node_modules
  • 然后重新安装它们 ( npm install)。

npm3他们设法拥有更扁平的文件夹结构。虽然它的一个缺点可能是 npm 团队表示它仍处于测试阶段,并且为了真正的稳定性和迁移,您必须等到 npm4。我对具体的了解还不够。无论如何,npm3 对我有用。

如您所见,我正在使用 git bash。不知何故,git bash 中的 pf npm 版本仍在 v2 上,而普通命令提示符(例如cmd)我已经有了 v3。在 bash 中,您还可以使用以下命令确认您确实遇到了由于 MAXPATH 导致的问题:

(find | awk '{ print length(), NR, $0 | "sort -rn" }' | less)

您被放入(更少)编辑器中。检查第一列/编号,行按长度排序,所以只需检查第一行。长度应低于 260。使用:q:) 退出编辑器。请注意,您应该自己添加基本路径长度,因为指示了当前文件夹中的长度。也许 bash 向导可以提供更好的命令。

于 2016-01-05T12:52:26.060 回答
1

我在 VS 2019 中一直遇到同样的问题,但是如果我关闭并重新打开它,问题会消失一段时间,我可以构建我的项目,但过了一段时间它又回来了,我必须关闭并重新打开再次。如果您遇到问题,可能只是 VS 脾气暴躁。在尝试更激烈的操作之前可能值得重新启动程序。

于 2019-06-03T13:38:32.340 回答