找不到模块“./version”-Azure DevOps 上的 npm 安装失败

Cannot find module './version' - npm install on Azure DevOps fails

我在 Azure DevOps 中 CI/CD 构建期间遇到了 npm 安装步骤的问题。

导致此问题的特定包似乎是 node-sass。这个包在过去也给我带来了很多麻烦,但我确实让它工作了,并且构建已经 运行 好一段时间了。现在由于某种原因,它们再次失败,但我似乎无法在我的机器上重现该问题,并且该错误对我来说没有任何意义。

这是失败构建的输出:https://pastebin.com/w4aK4dEh

错误信息是“错误:找不到模块‘./version’”

我试过修改步骤,从简单的 npm install 改成 npm install --save-dev --unsafe-perm 但似乎没有任何效果。

package.json

{
  "version": "1.0.0",
  "name": "myproject",
  "private": true,
  "devDependencies": {
    "gulp": "4.0.2",
    "gulp-concat": "2.6.1",
    "gulp-cssmin": "0.2.0",
    "gulp-rename": "2.0.0",
    "gulp-sass": "4.1.0",
    "gulp-uglify": "3.0.2",
    "rimraf": "3.0.2",
    "node-sass": "^4.8.3"
  },
  "dependencies": {}
}

我也尝试完全从依赖项中删除 node-sass 因为我认为 gulp-sass 已经默认包含它,但后来我 运行进入“未找到模块节点-sass”错误。

我真的被这个难住了。如有任何建议,我们将不胜感激。

我不完全确定以下哪一项是成功的关键,但这是我为解决此问题所做的工作:

  1. 从我的项目中删除 node_modules 文件夹,提交并修改我的 .gitignore 以将其从存储库中永久排除(是的,我知道这个有点争议,因为有些人说文件夹应该签入)

  2. 更新 package.json 文件中依赖项的版本

  3. 指定要使用的 NodeJs(以及 npm)的特定版本。我通过简单地在 Azure 构建管道中添加一个步骤来做到这一点。有趣的是,最新版本(撰写本文时为 15.2.1)无法运行,但 LTS 版本 14.15.1 可以运行。

这三个更改的某种组合确实解决了我的问题。我将此信息留在此处以防其他人遇到同样的错误消息。