无法将节点项目发布到Azure - 文件名必须少于260个字符

时间:2015-11-03 15:15:42

标签: node.js visual-studio azure visual-studio-2013

我在Visual Studio 2013中使用NodejsTools,但可以将我的项目发布到Azure。当我构建我的文件时,我收到以下错误:

  

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Node.js   Tools \ Microsoft.NodejsTools.targets(115,5):错误MSB4018:The   “AssignTargetPath”任务意外失败。   System.IO.PathTooLongException:指定的路径,文件名或两者   太长了完全限定的文件名必须小于260   字符和目录名称必须少于248个字符。

有关如何修复此问题的任何线索/让我的节点项目发布到Azure?

更新1:如果我将项目移动到Windows C:驱动器中的根文件夹,则构建错误消失并构建成功。但是,如果我尝试发布,它会失败并且没有说明原因:

  

------发布开始:项目:MyProject,配置:释放任何CPU ------ Auto ConnectionString将Web.config转换为   OBJ \发布\ CSAutoParameterize \转化\ Web.config文件。全部复制   文件到包含/发布的临时位置:   OBJ \发布\包\ PackageTmp。

     

==========构建:0成功,0失败,1最新,0跳过==========   ==========发布:0成功,1失败,0跳过==========

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。在visual studio模板中创建的路径确实太长,无法在Azure上传。路径可能在您的" node_modules"文件夹中。

我解决了这个问题如下: 在项目文件夹中,我删除了文件夹" node_modules",其中包含构建项目所需的所有模块。您可以稍后添加这些模块,所以不用担心。

打开visual studio,重新加载解决方案并在Azure帐户上再次发布项目。 Visual Studio现在可能不会返回任何错误,因为所有路径都短于240个字符。

然后,登录Azure门户,打开您的Web应用程序,然后单击"添加磁贴"并添加控制台磁贴。打开控制台磁贴并运行命令" npm install"。此命令添加项目中的所有依赖项,因此添加文件夹" node_modules"包含项目所需的所有模块。您可以使用" Visual Studio Online Extension"。

查看您的项目并使用它们

答案 1 :(得分:0)

如果没有错误代码,则很难进行故障排除。

我建议您在<PropertyGroup>项目文件中检查<OutputPath>.</OutputPath> node.js.njsproj值,这些值以class TableViewController: UITableViewController { var lastSelectedIndexPath = NSIndexPath(forRow: -1, inSection: 0) override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) // Configure the cell... cell.textLabel!.text = "row: \(indexPath.row)" if cell.selected { cell.selected = false if cell.accessoryType == UITableViewCellAccessoryType.None { cell.accessoryType = UITableViewCellAccessoryType.Checkmark } else { cell.accessoryType = UITableViewCellAccessoryType.None } } return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let cell = tableView.cellForRowAtIndexPath(indexPath) if cell!.selected { cell!.selected = false if cell!.accessoryType == UITableViewCellAccessoryType.None { cell!.accessoryType = UITableViewCellAccessoryType.Checkmark } else { cell!.accessoryType = UITableViewCellAccessoryType.None } } } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 100 } } 结尾。任何信息,请与我分享。

在我的测试中,我必须通过Azure Node.js应用程序模板创建一个nodejs应用程序,以便我可以将其发布到Azure Web Apps。 enter image description here

您可以尝试使用Azure Node.js应用程序创建新的node.js应用程序,并检查是否可以将其发布到Azure Web App。成功将应用程序发布到Azure后,您可以将代码复制到此项目中,然后再次尝试发布。

如有任何疑虑,请告诉我。