当前位置: 首页 > 知识库问答 >
问题:

通过使用Azure构件的Azure devops组织共享NPM脚本/应用程序

夹谷承安
2023-03-14

我有一个git存储库,包含一个node.js应用程序(只有1个文件)及其package.json.

我需要使用其他组织的Azure devops管道中的“应用”,所以我在nodejs项目中创建了一个管道,在基于NPM的Azure工件提要上发布该脚本的版本控制。

在另一个组织中,在我想要使用该应用程序的管道中,我使用了一个“npm”任务,配置如下:

steps:
- task: Npm@1
  displayName: 'npm install MyPackage'
  inputs:
    command: custom
    verbose: false
    customCommand: 'install MyPackage'
    customRegistry: useFeed
    customFeed: '...some-guid....'

安装似乎可以(我在第二个组织中创建了一个提要,第一个组织的提要作为上游来源,如文档所示)。

现在,我该如何在下一个管道任务中执行该脚本?我试图连接到代理,但是当我运行“MyPackage”命令时,我得到“命令未找到”。脚本安装在哪里?我该怎么执行呢?有什么东西可以放在路径中吗?我应该使用“-g”选项吗?

谢谢你的帮助:)

使用请求的日志更新:

任务日志

Starting: npm custom
==============================================================================
Task         : npm
Description  : Install and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.
Version      : 1.182.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/package/npm
==============================================================================
/usr/local/bin/npm --version
6.13.7
/usr/local/bin/npm config list
; cli configs
metrics-registry = "https://pkgs.dev.azure.com/org/_packaging/....some-guid..../npm/registry/"
scope = ""
user-agent = "npm/6.13.7 node/v13.11.0 darwin x64"

; environment configs
userconfig = "/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/npm/33366.npmrc"

; userconfig /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/npm/33366.npmrc
registry = "https://pkgs.dev.azure.com/org/_packaging/....some-guid..../npm/registry/"

; builtin config undefined
prefix = "/usr/local"

; node bin location = /usr/local/Cellar/node/13.11.0/bin/node
; cwd = /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/s
; HOME = /Users/...
; "npm config ls -l" to show all defaults.

/usr/local/bin/npm install -g MyPackage
+ MyPackage@1.0.20210216-1
added 198 packages from 99 contributors in 18.319s
Finishing: npm custom

下面是第二个定义:

steps:
- script: |
   echo "1"
   node MyPackage
   
   echo "2"
   MyPackage
   
  displayName: 'Command Line Script'

以及关联的执行日志:

Starting: Command Line Script
==============================================================================
Task         : Command line
Description  : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version      : 2.182.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
Generating script.
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/_temp/7fe7833a-ce7d-48af-ab8f-1fcf2e740c36.sh
1
internal/modules/cjs/loader.js:979
  throw err;
  ^

Error: Cannot find module '/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/10/s/MyPackage'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:976:15)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
2
/Users/.../AGENTS/vsts-agent-osx-x64-2.179.0-AZURE-01/_work/_temp/7fe7833a-ce7d-48af-ab8f-1fcf2e740c36.sh: line 5: MyPackage: command not found
##[error]Bash exited with code '127'.
Finishing: Command Line Script

共有2个答案

田普松
2023-03-14

终于发现了问题:

  • 第一,我必须安装包全局与-g选项
  • 第二,我不得不使用npx来运行它。
  • 第三,我必须更新package.json
  "bin": {
    "NAME_OF_THE_BINARY": "./FILE_TO_EXECUTE.js"
  },
通煜祺
2023-03-14

我们可以在Azure AD租户中的其他组织中添加Azure构件提要作为上游源。

例如,你在第一个组织中创建了一个feed,并在feed中添加了npm包,现在你想在第二个组织中使用该包,我们需要在第二个组织feed中设置上游源,如azure-feed://myOrg/myProject/myFeed@local,然后我们可以在第二个组织管道中安装和使用该包。

你也可以查看这个博客了解更多细节。

更新

我需要找到安装它的路径

我们可以添加任务命令行并运行npm list来查看当前位置安装的非全局库。查看这张票和博客了解更多细节。

安装路径为$(Build.SourcesDirectory)/node_modules,我们可以添加任务bash并运行ls'$(Build.SourcesDirectory)/node_modules'来检查它。

 类似资料:
  • 本文向大家介绍通过npm引用的vue组件使用详解,包括了通过npm引用的vue组件使用详解的使用技巧和注意事项,需要的朋友参考一下  什么是组件:组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展。     如何注册组件?     需

  • 我目前正在规划一个我想构建的移动应用程序,以及一个配套的web应用程序。移动应用程序和Web应用程序将共享通用数据(例如,用户可以在移动应用程序中进行问卷调查,也可以在Web应用程序上进行相同的问卷调查)。 几年前我曾使用Azure创建和托管一个web应用程序,但这是我在移动开发领域的第一次尝试。我正试图理解Azure中托管API的架构。 我到处寻找,但是要么找不到我的问题的明确答案,要么不太理解

  • 我正在用Google Apps脚本编写一个JavaScript工具来检查文档的一些属性,比如“所有链接是否有效”、“权限设置是否正确”等等。我正在使用中记录的APIhttps://developers.google.com/apps-script/reference/drive/drive-app通过ID查找文件,检查它们的权限,在GoogleDrive中找到它们,等等,但是我发现“共享驱动器”与

  • 这是因为我的构建是NetBeans特定的还是其他原因?

  • 我正在使用FB。允许用户使用此代码共享我的页面的ui: 当从 Android 移动应用程序中的嵌入式浏览器共享页面时,用户可以选择要用于打开共享对话框的应用程序。如果选择了脸书应用,则不会有回调响应。在普通的桌面浏览器中,一切都按预期工作。这种行为是预期的吗?