Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何解决在TeamCity中创建文件集时出现的NAnt错误?_Node.js_Powershell_Teamcity_Nant - Fatal编程技术网

Node.js 如何解决在TeamCity中创建文件集时出现的NAnt错误?

Node.js 如何解决在TeamCity中创建文件集时出现的NAnt错误?,node.js,powershell,teamcity,nant,Node.js,Powershell,Teamcity,Nant,我正在使用TeamCity构建并部署到我们的演示站点中。我们有一个名为HTML演示站点的配置,其中一个构建步骤是使用NAnt将HTML部署到站点 生成文件已定义目标: <target name="deploy-html" description="Deploys the HTML to the demo server"> <echo message="Deploying HTML to the demo server..."/> <copy todi

我正在使用TeamCity构建并部署到我们的演示站点中。我们有一个名为HTML演示站点的配置,其中一个构建步骤是使用NAnt将HTML部署到站点

生成文件已定义目标:

<target name="deploy-html" description="Deploys the HTML to the demo server">
    <echo message="Deploying HTML to the demo server..."/>
    <copy todir="\\<server>\<dir>\<client>" includeemptydirs="true" overwrite="true">
        <fileset basedir="..\html\_master">
            <include name="**\*"/>
            <exclude name="node_modules\**"/>
        </fileset>
    </copy>
</target>
因此,我尝试在PowerShell上运行,以获取超过最大长度的文件列表:

Get-ChildItem -Recurse | Where-Object {$_.FullName.Length -gt 248}

但返回的唯一文件是node_modules目录下的文件。但在构建文件中,它被排除在外。所以我不知道还能去哪里找?有什么想法吗?

您可以尝试以下几点:

  • 首先删除节点_modules dir
  • 任务中使用
  • 尝试将排除放在包含之前(不太可能,但值得一试)
  • 尝试将路径表达式更改为
    name=“node\u modules\**”
    name=“**\node\u modules\**”
    或类似的表达式

首先删除对我有效-但是内置的nant delete任务也有问题,所以我不得不使用
rmdir
控制台命令

<exec program="${environment::get-variable('WinDir')}\system32\cmd">
    <arg value="/c &quot;rmdir /q /s ${Build.BuildFolder}\WebApplication\node_modules&quot;" />
</exec>


1。您是否在生成计算机上运行powershell?2.node_modules文件夹是否直接位于_主文件夹下?如果没有,请将排除条件更改为“*/node_modules/”。3.Team city正在生成服务器“C:\tc\w\9149e011dfa8657d\build_scripts”1上的文件夹名称中添加长id。我在本地计算机和生成计算机上都运行了PowerShell。2.node_modules目录位于_主目录下。其他:我还在两台机器上本地运行NAnt脚本。在我的本地机器中,NAnt会像预期的那样忽略node_modules目录。在生成计算机中,NAnt脚本忽略排除条件,并包含导致错误的node_modules目录。两台计算机上的NAnt版本相同吗?如果是,哪个版本?我会在我的机器上测试这个,稍后让你知道。刚刚在我的机器上测试过,当路径长度超过windows允许的长度时,它会出错。这不会在本地发生,因为您的本地路径没有达到限制,如果您重命名其中的一些文件夹,它也会在本地抛出错误。我没有时间浏览NANT代码,并找出为什么它会发生在被排除的文件夹中。将在稍后花费一些时间。以下是Windows API中的一些限制,您应该了解这些限制:#定义最大路径260//完整路径的最大长度#定义最大目录256//路径组件的最大长度#定义最大名称256//文件名组件的最大长度#定义最大扩展256//扩展组件的最大长度第一个选项适用于我正如你所怀疑的,把排除放在第一位是行不通的。
<exec program="${environment::get-variable('WinDir')}\system32\cmd">
    <arg value="/c &quot;rmdir /q /s ${Build.BuildFolder}\WebApplication\node_modules&quot;" />
</exec>