首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm无法处理版本#中的引导0--“npm版本补丁”未被识别--导致“npm !ERR``` `”

npm无法处理版本#中的引导0--“npm版本补丁”未被识别--导致“npm !ERR``` `”
EN

Stack Overflow用户
提问于 2017-08-15 17:54:32
回答 1查看 1.6K关注 0票数 0

我使用节点7.10.1 (它有NPM4.2.0)。我运行在Windows7 SP1上。

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

  • git add .
  • git commit - m "reason for change"
  • npm version patch

这在我做过的其他3个项目中是无缝的。

现在,当我在当前项目上运行这个程序时,会得到以下错误/输出:

代码语言:javascript
复制
> 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,其馀的输出似乎毫无意义。我通过国家预防机制在全球范围内安装的唯一工具是:

代码语言:javascript
复制
npm list -g --depth=0
C:\Users\myuser\AppData\Roaming\npm
+-- electron@1.7.6
`-- gulp-cli@1.3.0

下面是我的package.json,以防有什么问题.

代码语言:javascript
复制
{
  "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"
  }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-16 00:33:07

(贴出我想出的答案)

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

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

代码语言:javascript
复制
{
... ... ..
  "version": "0.01.19",
... ... ..
}

这就是导致这个命令的原因。

代码语言:javascript
复制
npm version patch

若要产生错误:

代码语言:javascript
复制
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字段更改为:

代码语言:javascript
复制
{
... ... ..
  "version": "0.1.19",
... ... ..
}

虽然我发现了这个问题是很好的,但是当这个错误发生时,npm并没有产生有用的信息。实际上,无法调试所产生的错误消息所发生的事情。这应该由npm来改变。在此之前,请注意不要在package.json中允许前导零。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45698640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档