npm ERR! 无效的名称:“@ types / handlebars”

我试图用npm安装typedoc,但是看到下面的错误:

npm ERR! Invalid name: "@types/handlebars" 

然后我试图直接安装@ types / handlebars:

 npm install @types/handlebars 

并再次显示相同的错误消息。 当我尝试通过运行查看包信息时:

 npm info @types/handlebars 

我可以正确地看到信息。 我还应该检查什么来解决这个问题? 我在OSX 10.10.5上使用节点v4.8.3和npm v2.15.11。

这里是npm-debug.log的堆栈跟踪:

 58 verbose etag https://registry.npmjs.org/@types%2fhandlebars from cache 59 verbose get saving @types/handlebars to /Users/ycchen/.npm/registry.npmjs.org/_40types_252fhandlebars/.cache.json 60 verbose correctMkdir /Users/ycchen/.npm correctMkdir not in flight; initializing 61 silly addNameTag next cb for @types/handlebars with tag latest 62 silly addNamed @types/handlebars@4.0.33 63 verbose addNamed "4.0.33" is a plain semver version for @types/handlebars 64 verbose stack Error: Invalid name: "@types/handlebars" 64 verbose stack at ensureValidName (/usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js:297:15) 64 verbose stack at Object.module.exports.fixNameField (/usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js:201:5) 64 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/normalize.js:29:38 64 verbose stack at Array.forEach (native) 64 verbose stack at normalize (/usr/local/lib/node_modules/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/normalize.js:28:15) 64 verbose stack at final (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:349:5) 64 verbose stack at then (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:5) 64 verbose stack at ReadFileContext.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:295:20) 64 verbose stack at ReadFileContext.callback (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16) 64 verbose stack at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:303:13) 

我怀疑这与其实际从何处获得types有关。 info命令起作用,因为它必须查看官方npmregistry。

要试用它,你可以覆盖registry的特定范围(在这种情况下是@types)。 例如:

 npm config set @types:registry https://registry.npmjs.org/ 

这告诉npm总是直接从官方registry中获取任何@types作用域。

编辑:我从你编辑的问题看,npm确实试图从官方registry,所以你可能希望得到最新的npm,因为你使用的版本是相当过时。 你可以这样做:

 sudo npm cache clean sudo npm install npm -g