错误 运行 npm 在 ADO 存储库中生成包以允许它通过 terraform 创建管道

Error running npm to generate a package in an ADO repository to allow it to create pipelines via terraform

在执行以下操作以在存储库中创建包后,我收到了下面列出的错误,我错过了什么?

编辑:这特别发生在我身上,尽管它适用于团队中的其他 DevOps 技术人员。

确保我使用的是构建它的 nodejs 版本,12.x。
确保我有一个有效的 PAT,这样我就不会收到 401 权限错误。
甚至创建了一个全新的 PAT 并在我的路径的根目录下创建了一个新的 .npmrc 文件,其他一切都正常(我可以推送构建、从原点拉取等,没有错误。)

在本地克隆 repo 干净的 git 拉原点了吗 确保我没有待处理的提交

所有这一切应该做的是在 repo 中创建我们用于 Terraform 的包: 从 repo 本地副本的根目录,执行

npm i @rootdevops/web-builds --no-save --registry=https://pkgs.dev.azure.com/parentdir/parent_repo_name/_packaging/eudevops/npm/registry/

执行运行这个命令后,在你的项目根目录下会有一个.rootdevops文件夹。

我收到以下错误:

npm ERR! code 1
npm ERR! path C:\Users\me\A-Web-Landlord\node_modules\@rootdevops\web-builds
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node ./scripts/install.js
npm ERR! removing last [.rootdevops.backup] folder...
npm ERR! renaming [.rootdevops] as [.rootdevops.backup]...
npm ERR! installing devops package...
npm ERR! internal/fs/utils.js:779
npm ERR!   throw new ERR_INVALID_ARG_TYPE(
npm ERR!   ^
npm ERR!
npm ERR! TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined
npm ERR!     at Object.writeFileSync (fs.js:1460:5)
npm ERR!     at Object.<anonymous> (C:\Users\me\A-Web-Landlord\node_modules\@rootdevops\web-builds\scripts\install.js:31:5)
npm ERR!     at Module._compile (internal/modules/cjs/loader.js:1063:30)
npm ERR!     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
npm ERR!     at Module.load (internal/modules/cjs/loader.js:928:32)
npm ERR!     at Function.Module._load (internal/modules/cjs/loader.js:769:14)
npm ERR!     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
npm ERR!     at internal/main/run_main_module.js:17:47 {
npm ERR!   code: 'ERR_INVALID_ARG_TYPE'
npm ERR! }

这是 install.js

中的内容
// read version from package.json and save to installFolder
const packageJson = fse.readFileSync(`${nodePkgFolder}/package.json`);
const package = JSON.parse(packageJson);
fse.writeFileSync(`${installFolder}/pkg_version.txt`, package._id);

package.json 用这个

触发 install.js
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "postinstall": "node ./scripts/install.js",
    "release": "npm version patch && npm publish"

您是否尝试将 package._id 更改为 package.id?您尝试写入的值似乎未定义(_id 属性不存在)

这个问题很棘手运行ge:出于某种原因,我们使用的开发包使用的是 fs-extra 4.0.2。

我从 VS Code 中删除了它并提交了 运行 npm i 命令,它拉取了 9.1.0 和 运行 然后一切正常。

我们不使用那个版本,所以我怀疑 Web 开发团队 UI 引用的是旧版本,因为这是旧版本的升级项目。