错误!名称无效:“@types/handlebars”

npm ERR! Invalid name: "@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)

我怀疑这与实际获取类型的位置有关。 info 命令有效,因为它必须查看官方 npm 注册表。

要尝试一下,您可以覆盖特定范围的注册表(在本例中为@types)。例如:

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

这告诉 npm 始终直接从官方注册表获取 @types 范围的任何内容。

编辑:我从您编辑的问题中看到 npm 确实尝试从官方注册表中获取它,因此您可能希望获取最新的 npm,因为您使用的版本已经过时了。您可以这样做:

sudo npm cache clean
sudo npm install npm -g