【问题标题】:Possible to create file in sources directory on Azure DevOps during build可以在构建期间在 Azure DevOps 的源目录中创建文件
【发布时间】:2020-08-01 19:27:09
【问题描述】:

我有一个节点脚本,它需要在构建文件之前在我的应用程序的根目录中创建一个文件。

此文件将包含的数据特定于每个触发的构建,但是,在这方面我在 Azure DevOps 上没有运气。

对于我正在使用 fs.writeFile(...) 的文件的写入,类似于以下内容:

fs.writeFile(targetPath, file, function(err) { // removed for brevity });

然而,这引发了一个期望:

[错误:ENOENT:没有这样的文件或目录,打开'/home/vsts/work/1/s/data-file.json']

在本地这可行,我假设这与权限有关,但是,我尝试将此文件的空白版本添加到我的项目中,但是它仍然抛出此异常。

【问题讨论】:

  • 你如何运行这个文件?你用什么任务?你能把你的yaml文件贴在这里吗?
  • 你好朋友,这个问题有更新吗?如果您仍然被此问题阻止,请随时告诉我。只是提醒this :)

标签: node.js azure-devops fs


【解决方案1】:

可以在 Azure DevOps 的源目录中创建文件 构建

答案是是的。如果您使用的是 Microsoft ubuntu 托管代理,则 Azure Devops 服务完全支持这种情况。

如果您在使用 microsoft-hosted agent 时遇到了这个问题,我认为这个问题更多地与一个路径问题有关。请检查:

  1. 出现错误no such file or directory 的函数。除了fs.writeFile 函数,您是否还在xx.js 文件中使用fs.readFile?如果是这样,您应该确保两条路径相同

  2. 源文件的结构和您的实际需求。根据您的问题,您想在源目录/home/vsts/work/1/s 中创建它,但第一行表示您实际上是要在我的应用程序的根目录中创建文件。

    1).如果要在源目录/home/vsts/work/1/s创建文件:

    在您的 js 文件中:使用类似 './data-file.json' 的目标路径。并确保您从源目录运行命令node xx.js。 (留下CMD任务/PS任务/Bash任务的工作目录空白!!!)

    2).如果您想在应用程序文件夹的根目录中执行此操作,例如 /home/vsts/work/1/s/MyApp

    在您的 js 文件中:使用 __dirname,如 fs.writeFile(__dirname + '/data-file.json', file, function(err) { // removed for brevity });fs.readFile(__dirname + '/data-file.json',...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多