npm 无法处理版本中的前导 0——无法识别“npm version patch”——导致“npm !ERR”

npm can't handle leading 0's in version #-- `npm version patch` not being recognized- resulting in ```npm !ERR```

我正在使用节点 7.10.1(它有 npm 4.2.0)。我正在 运行宁 Windows 7 SP1。

在过去的其他项目中,我使用以下方法修改 package.json 中的版本号:

这在我完成的其他 3 个项目中无缝运行。

现在,当我在当前项目中 运行 时,我得到以下 error/output:

> npm version patch
npm ERR! npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
npm ERR! (run in package dir)
npm ERR! 'npm -v' or 'npm --version' to print npm version (4.2.0)
npm ERR! 'npm view <pkg> version' to view a package's published version
npm ERR! 'npm ls' to inspect current package/dependency versions

package.json 可以很好地完成所有其他任务(构建、安装等)。尽管在上面显示的输出的第二行中有指示,但我 运行 在包目录根级别(与 package.json 相同的目录)中执行命令。

我的 package.json 中是否有 npm version patch 不喜欢的内容?该错误没有告诉我什么是错误的,更不用说如何修复它了。本地回购副本似乎很好。我什至删除并重新克隆了它,我想也许我在本地遇到了一些问题,但没有改变。

通过这个错误,我能清楚地看到的只有 npm !ERR,其余的输出似乎没有意义。我通过 npm 全局安装的唯一东西是:

npm list -g --depth=0
C:\Users\myuser\AppData\Roaming\npm
+-- electron@1.7.6
`-- gulp-cli@1.3.0

下面是我的package.json,万一有什么不妥...

{
  "name": "MyProject",
  "version": "0.01.19",
  "description": "My Project",
  "productName": "My Project",
  "copyright": "Copyright (C) My Company, Inc. All Rights Reserved",
  "main": "main.js",
  "scripts": {
    "build:prod": "set NODE_ENV=production && webpack -p --progress",
    "build:dev": "webpack-dev-server --inline --progress --display-error-details",
    "build": "rm -rf testDist && tsc",
    "start": "electron .",
    "pretest": "npm run build",
    "//": "test : ./node_modules/.bin/mocha ./ServerSide/test/fileHandler.test.js --reporter spec",
    "test": "karma start karma.conf.js",
    "posttest": "node_modules/.bin/remap-istanbul -i converage/coverage-final.json -o coverage -t html",
    "coverage": "http-server -c-1 -o -p 9875 ./coverage",
    "postversion": "git push && git push --tags"
  },
  "repository": {
    "type": "git",
    "url": "http://mylocalgitserver.company.com/my-program/my-project-repo.git"
  },
  "author": "My Company",
  "authors": [
    "My Project Team"
  ],
  "os": [
    "win32"
  ],
  "cpu": [
    "ia32",
    "x64"
  ],
  "license": "",
  "private": true,
  "devDependencies": {
    "@angular/animations": "4.3.4",
    "@angular/common": "4.3.4",
    "@angular/compiler": "4.3.4",
    "@angular/core": "4.3.4",
    "@angular/forms": "4.3.4",
    "@angular/http": "4.3.4",
    "@angular/platform-browser": "4.3.4",
    "@angular/platform-browser-dynamic": "4.3.4",
    "@angular/router": "4.3.4",
    "@angular/upgrade": "4.3.4",
    "@types/deep-diff": "0.0.30",
    "@types/jasmine": "2.5.53",
    "@types/mocha": "2.2.41",
    "electron": "1.7.6",
    "gulp": "3.9.1",,
    "gulp-if": "2.0.2",
    "gulp-jscs": "4.0.0",
    "gulp-jshint": "2.0.4",
    "http-server": "0.10.0",
    "karma": "1.7.0",
    "karma-chrome-launcher": "2.2.0",
    "karma-webpack": "2.0.4",
    "less": "2.7.2",
    "less-loader": "4.0.5",
    "loader-utils": "1.1.0",
    "lodash": "4.17.4",
    "mocha": "3.5.0",
    "remap-istanbul": "0.9.5",
    "rxjs": "5.4.3",
    "shelljs": "0.7.8",
    "source-map-loader": "0.2.1",
    "webpack": "3.5.4",
    "webpack-dev-server": "2.7.1",
    "yargs": "8.0.2",
    "zone.js": "0.8.16"
  },
  "dependencies": {
    "body-parser": "1.17.2",
    "cookie-parser": "1.4.3",
    "ejs": "2.5.7",
    "express": "4.15.4",
    "fs-exists-sync": "0.1.0",
    "morgan": "1.8.2",
    "project-interface-module": "git+http:///mylocalgitserver.company.com/my-program/project-interface-module.git#v2.7.0",
    "stream-to-buffer": "0.1.0",
    "uuid": "3.1.0",
    "valid-filename": "2.0.1",
    "validator": "8.0.0",
    "yauzl": "2.8.0"
  }
}

(发布我想出的答案)

问题是我在版本号字段中有前导零。

事实证明,package.json 中的 version 字段的任何部分都不能有前导零 。具体来说,在我的 package.json 中,我有以下内容:

{
... ... ..
  "version": "0.01.19",
... ... ..
}

这就是导致此命令的原因

npm version patch

产生错误:

npm ERR! npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
npm ERR! (run in package dir)
npm ERR! 'npm -v' or 'npm --version' to print npm version (4.2.0)
npm ERR! 'npm view <pkg> version' to view a package's published version
npm ERR! 'npm ls' to inspect current package/dependency versions

修复方法是将 package.json 文件中的版本字段更改为以下内容:

{
... ... ..
  "version": "0.1.19",
... ... ..
}

虽然我发现问题很好,但 npm 发生此错误时没有提供有用的信息。从字面上看,无法通过生成的错误消息来调试正在发生的事情。这应该由 npm 更改。在那之前,请注意不要在 package.json.

中使用前导零