NPM无法安装类型

时间:2017-10-02 15:15:37

标签: node.js npm windows-10 npm-install

我遇到npm install问题,因为它不会安装@types。

这很好用

npm install --save lodash

但是询问类型不是

npm install --save @types/lodash

PS C:\Development\Temp> npm install --save @types/lodash
npm WARN `git config --get remote.origin.url` returned wrong result (git://github.com/types/lodash)
npm WARN `git config --get remote.origin.url` returned wrong result (git@github.com:types/lodash)
npm ERR! git clone git@github.com:types/lodash Cloning into bare repository 'C:\Users\myuser\AppData\Roaming\npm-cache\_git-remotes\git-github-com-types-lodash-9eb5372a'...
npm ERR! git clone git@github.com:types/lodash Host key verification failed.
npm ERR! git clone git@github.com:types/lodash fatal: Could not read from remote repository.
npm ERR! git clone git@github.com:types/lodash
npm ERR! git clone git@github.com:types/lodash Please make sure you have the correct access rights
npm ERR! git clone git@github.com:types/lodash and the repository exists.
npm ERR! addLocal Could not install types/lodash
npm ERR! Error: ENOENT: no such file or directory, stat 'C:\Development\Temp\types\lodash'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Windows_NT 10.0.15063
npm ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\ProgramData\\chocolatey\\lib\\npm\\tools\\node_modules\\npm\\bin\\npm-cli.js" "install" "--save" "@types/lodash"
npm ERR! cwd C:\Development\Temp
npm ERR! node -v v8.6.0
npm ERR! npm -v 1.4.9
npm ERR! path C:\Development\Temp\types\lodash
npm ERR! syscall stat
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Development\Temp\npm-debug.log
npm ERR! not ok code 0
PS C:\Development\Temp>

这让我摸不着头脑。我已经更新了Chocolatey,NodeJS,NPM以确保他们自己的最新版本。尝试在空文件夹或现有TypeScript项目上执行命令 - 认为在Git存储库中运行可能会感到困惑(错误:remote.origin.url)。看看GitHub网址没有意义git://github.com/types/lodash

我从MSDN Blog - The Future of Declaration Files

中提取了这些示例

更新:我已卸载Node.js并尝试重新安装v6.11.3 LTS或v8.6.0。但是@types命令仍然失败。

更新2:我意识到Chocolately正在掩盖npm版本。我删除了Chocolately文件夹,并根据@Louis回答升级了npm。

1 个答案:

答案 0 :(得分:4)

将您的npm版本升级到版本4或5.我提到4,因为我遇到了5的问题,使用4仍然可行。我不知道有什么理由可以运行旧版本。

您正在使用npm版本1.4.9,如日志的这一行所示:

npm ERR! npm -v 1.4.9

问题是版本2之前的 npm版本不支持范围包。以@开头的包是作用域包,因此@types/lodash是一个范围包。您需要npm版本2或更高版本才能安装它。如果您要使用1.x系列中的最新npm(1.4.29),则会收到更好的错误消息:

npm ERR! Error: This version of npm doesn't support scoped packages (caused by reference to @types/lodash). Update to npm@2+.

版本1.4.9甚至不知道范围包是一个东西,所以它不能给出一个很好的错误信息。它看起来像@符号表示包名是一个地址,并用Github作为默认主机填充缺少的信息。

我通常用于升级npm的升级命令是:

npm install -g npm

您可以通过将npm参数替换为提供特定版本号的参数来指定特定版本。例如,npm@4会在4.x系列中安装最新的npm。如果您未指定版本号,则会获得最新发布的版本。