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 中的版本号:
git add .
git commit - m "reason for change"
npm version patch
这在我完成的其他 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.
中使用前导零
我正在使用节点 7.10.1(它有 npm 4.2.0)。我正在 运行宁 Windows 7 SP1。
在过去的其他项目中,我使用以下方法修改 package.json 中的版本号:
git add .
git commit - m "reason for change"
npm version patch
这在我完成的其他 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.