Npm
Posted 编码1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Npm相关的知识,希望对你有一定的参考价值。
npm的目的:解决插件冲突,基于node环境,npm可以安装第三方库!
npm组成部分:
1.registry:入口(可以想象他是数据库,类似将第三方放进来,谁用就来数据库拿)
2.官网:https://www.npmjs.com/
3.Cli:需要熟悉的npm命令
了解registry:
该服务器是国外的,想要在国内使用,需要重新设置registry : https://registry.npm.taobao.org提供了国内的registry地址,
设置方式(命令行输入):npm config set registry https://registry.npm.taobao.org;
检查是否设置成功:npm config get registry
node_modlues文件夹:
在node_modules下显示该依赖(记得刷新一下),该node_modlues文件夹因为文件夹过多,会忽略该目录的文件内容!
要是下载的依赖包还有其他依赖,也会将依赖放在node_modlues;
本地安装的包带有CLI的,npm会将他下载到node_modlues/.bin下,使用命令 npx 命令名 进行调用
全局安装依赖和局部安装依赖:(重要:全局安装的包并非所有工程可用,他仅提供全局的CLI工具)
全局安装命令: npm install --global 包名 或者 npm i -g 包名
局部安装命令: npm install 包名 或者 npm i 包名
package.json文件(记录当前工程的依赖):
可以解决问题:
1.node_modues文件夹上传git等,会忽略该文件夹内容,可以进行还原(查看第四)
2.区分开发依赖和生产依赖(如:需要在开发环境使用一个测试工具,需要下载该依赖) (查看第四)
3.如果自身项目也是一个包,如何描述包的信息
如何创建package.json:
1.可以手动直接新建文件:输入:package.json
2.输入命令:git init ;直接创建package.json(需要输入各个配置项,可以使用: git init -yes 或者 git i -y (默认))
3.了解配置文件中的信息
name:包的名称,必须是英文单词
version:版本(如:3.1.2)版本规范:主版本号(程序发生重大变化),次版本号(程序发生小变化),补丁版本号(出现一些问题)
4.区分开发环境和生产环境所用依赖
dependencies = 生产环境;devDependencies = 测试环境
如何安装生产环境
npm i 包名 或者 npm i --save 包名 或者 npm i -S 包名
如何安装开发环境
npm i --save-dev 包名 或者 npm i -D 包名
注意:
版本号之前的 ^ 叫做语义版本号
Require()
如:var a = require(‘egg’)
egg这个文件指向哪里:如果没有写具体路径,会去node_modules文件夹下去找,先找文件在找文件夹,如果在文件中没有找到该‘egg’文件;那么去找egg文件夹,找到后,去找package.json--main的配置,找到main了,则调用该方法,如果没有找到main,那么去找index文件,如果也没找到则报错(需要注意:如果是node的内置模块,以上指向原理作废)
NPM:运行 npm 时未找到 npm-cli.js
【中文标题】NPM:运行 npm 时未找到 npm-cli.js【英文标题】:NPM: npm-cli.js not found when running npm 【发布时间】:2014-09-03 12:08:33 【问题描述】:通常我可以使用 npm 安装库,但今天在安装 yeoman 时遇到了这个错误。请帮助找出根本原因。
D:\Works\phonegap\ionic\todo>npm install -g yo
module.js:340
throw err;
^
Error: Cannot find module 'C:\Program Files\nodejs\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
我查看了文件夹:
C:\Program Files\nodejs\node_modules\npm\bin\
但没有看到 node_modules 文件夹作为描述的错误。
我也尝试找到 npm-cli.js 并看到它实际上在C:\Program Files\nodejs\node_modules\npm\bin\
【问题讨论】:
你什么时候安装node的? 抱歉,我忘记重新安装 node 来修复这个错误,所以现在没有 node_modules 文件夹。但在此之前,我还检查了 C:\Program Files\nodejs\node_modules\npm\bin\node_modules\ 但没有在其中看到 npm 文件夹。 我有这个答案。 8小时后发布。谢谢。 好吧,我想可能有人需要这个提示:点击 node.js 安装程序,然后选择“修复”,这样错误就解决了。 【参考方案1】:原来问题是由于系统变量中节点的路径错误。路径当前指向
(我真的不知道我什么时候修改的)
C:\Program Files\nodejs\node_modules\npm\bin
所以我改成
C:\Program Files\nodejs
它就像一个魅力。
【讨论】:
遇到了同样的问题。从来没有改变过路径,所以我猜这一定是我升级Node时发生的。 我认为问题在我安装 Electron 时开始发生 :( 你在哪里改的?什么文件? 环境变量。 如果您正在使用 vs-code,请不要忘记在更改路径后关闭每个实例 ;)【参考方案2】:您需要在命令行中运行它。
SET PATH=C:\Program Files\Nodejs;%PATH%
【讨论】:
Windows 中的 bash shell 我在升级节点版本时遇到了这个问题。您的解决方案非常适合我。我不必删除任何node_modules
文件夹
很高兴它有帮助
在尝试使用 npm (npm -i npm) 更新 npm 后,我不得不将此路径进一步向上移动以赋予它更高的优先级。【参考方案3】:
我刚刚修复了我的 NodeJS 安装,它对我有用!
转到Control Panel\All Control Panel Items\Programs and Features
--> 找到NodeJS
并选择修复选项来修复它。希望这会有所帮助。
【讨论】:
这对我有用,但在 Windows 10 上它被称为“应用程序和功能”。 在我的情况下,node_modules 中没有 npm 文件夹,我所做的只是执行命令npm install express
,修复它有帮助。
谢谢你!在我的 Windows 电脑上的“应用程序和功能”下修复 Nodejs 后,我的问题得到了解决!
这个答案应该在列表的前面。谢谢!
同意。也很高兴知道 Windows 10 中存在该功能 - 所以感谢 PeonProgrammer...【参考方案4】:
如果您的路径中有C:\Program Files\nodejs
和C:\Program Files\nodejs\node_modules\npm\bin
,您也可能会遇到此问题。从路径中删除后者
【讨论】:
路径在哪里?【参考方案5】:从您安装的节点路径中复制名为npm
的目录(在我的例子中,npm 目录在C:\Program Files\nodejs\node_modules
中可用)。
导航到C:\Users\%USERNAME%\AppData\Roaming\npm\node_modules
并将复制的npm
目录粘贴到那里。
当我遇到同样的错误时,这种方法对我有用。 . .
【讨论】:
谢谢,在升级搞砸了我的 NPM 安装和修复并重新安装后,这非常有用。 我们要在哪些文件中进行更改。请指导【参考方案6】:这与问题中的情况不同,但可能对面临类似问题的人有所帮助。在 Windows 上,如果您从某些 CI/自动化工具调用 npm
命令,您可能会遇到错误:
Error: Cannot find module 'SOME_PATH\node_modules\npm\bin\npm-cli.js'
其中SOME_PATH
不是Program Files/...
,而是某个项目目录。所以 npm 尝试在项目根目录中查找 npm-cli.js,而不是在 Program Files/nodejs
中搜索。
原因是npm.cmd脚本:
:: Created by npm, please don't edit manually.
@ECHO OFF
SETLOCAL
SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
SET "NODE_EXE=node"
)
SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
)
IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)
"%NODE_EXE%" "%NPM_CLI_JS%" %*
此脚本使用%~dp0
来查找npm-cli.js,但一些自动化工具可能会以%~dp0
指向本地项目目录的方式设置工作目录,因此脚本无法正常工作。
一种可能的解决方案是从这里更改 npm 调用
npm.cmd install
到这里
cmd.exe /c npm.cmd install
【讨论】:
如果需要设置工作目录在特定目录下运行安装命令,这并不能解决问题 对我有用的是之后使用 npm 命令运行更改目录: "cmd.exe" /c cd /d "T:\TfsAgent_work\1\s\src\WebHost\" && "C:\Program Files\nodejs\npm.cmd" 安装【参考方案7】:在使用 nvm 安装 node 8.5 时,我遇到了同样的问题。以下解决方案对我有用
$ nvm uninstall 8.5
8.5.0
Uninstalling node v8.5.0...Error removing node v8.5.0
Manually remove C:\Users\Omkar\AppData\Roaming\nvm\v8.5.0.
$ nvm install 8.5
8.5.0
Downloading node.js version 8.5.0 (64-bit)...
Complete
Creating C:\Users\Omkar\AppData\Roaming\nvm\temp
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...
Installation complete. If you want to use this version, type
nvm use 8.5.0
Omkar@VAST-0137 MINGW64 /d/code
这对我有用,因为之前未使用 nvm 正确安装节点 8.5。我发现原因是之前没有在 node_modules 中创建“npm\bin\npm-cli.js”文件夹和文件。
【讨论】:
我的路径看起来不错;卸载/重新安装为我解决了这个问题。 即使我切换到新版本时,旧节点也有一些奇怪的问题。所以我卸载了旧节点并重新安装了新节点。通过这种方式,我用 cli 解决了这个问题 :) 谢谢 同样,我的路径没问题,我正在使用 NVM 在我的项目的节点版本之间切换。 nvm install 8.11 说它可以工作,但由于某些原因不能: node_modules 目录是空的,所以 npm 没有工作。执行 nvm uninstall 8.11 然后再次 nvm install 8.11 修复它!【参考方案8】:其他答案都不适合我。
这是我写的(在 windows 上的 git bash shell 中):
PATH="/c/Program Files/nodejs/:$PATH" npm run yeoman
【讨论】:
【参考方案9】:这在我安装GoogleChrome/puppeteer 后开始发生,解决方案是重新安装 npm:
$ npm i npm@latest
或
$ npm install npm@latest
【讨论】:
【参考方案10】:在 Mac 上:
当我遇到同样的错误时,我正在使用 Maven com.github.eirslett 前端插件运行它。
最终我不得不:
通过此处下载的安装程序安装 Node.js:http://nodejs.org/
从我的 maven 构建结构中删除所有 node/
和 node_modules/
文件夹。
【讨论】:
看起来这个问题已通过较新版本的前端插件修复:github.com/eirslett/frontend-maven-plugin/issues/147 对我来说,我只需要重新安装节点。谢谢!【参考方案11】:除了上述之外,我还必须删除C:\Users\%USERNAME%\AppData\Roaming\npm
。
这有帮助。
【讨论】:
在我的系统上,全局包所在的位置;如果将其从路径中删除,则可能无法再运行 gulp 等。【参考方案12】:不要更改任何环境变量
是导致问题的安装程序没有安装所有必需的文件。
我刚刚修复了 Windows 7 上的 NODEJS 设置,它运行良好。也许你可以重新安装,以防万一有些东西不起作用。
【讨论】:
【参考方案13】:升级到 nodejs 最新版本时,实际上有 2 个路径被添加到您的系统变量中。
1. C:\Program Files\nodejs
2. C:\Program Files\nodejs\node_modules\npm\bin
对于 Windows 7/8/8.1 用户,他们将没有环境变量 Windows 10 智能 GUI。
无论如何,您所要做的就是搜索 "C:\Program Files\nodejs\node_modules\npm\bin"
并将其删除。
此外,从环境变量中删除 "C:\Users\%USERNAME%\AppData\Roaming\npm"
。我发布这个答案是因为我浪费了 10 个小时在互联网上寻找解决方案。通过结合上面的答案,我终于解决了这个问题。
【讨论】:
【参考方案14】:我在 Windows 上遇到了同样的问题。 我刚刚修复了Node,在Windows上重新启动命令后它工作正常。
【讨论】:
【参考方案15】:这里没有一个解决方案对我有用,但是在我重新启动系统并再次执行npm install
之后,它就起作用了。
我猜想我之前运行过的一个或多个进程会保留它。
Windows 10 上的简单 PC 重启为我带来了魔力!
【讨论】:
也为我工作!错误可能在 Win10 更新后开始【参考方案16】:就我而言,我使用的是nvm-windows 1.1.6,我使用nvm install latest
更新了我的nodejs版本,最终告诉我安装了nodejs和npm,但是当我尝试执行npm install
时,我收到了
错误:找不到模块'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
在检查 nvm-windows 结构时,我发现 C:\Program Files\nodejs
符号链接到 %APPDATA%\nvm\NODE_VERSION
,(在我的情况下,NODE_VERSION 是 v9.7.1),其中文件夹 node_modules
内部没有任何内容,导致此错误。解决方案是从我以前版本的node_modules
文件夹中复制npm
文件夹并将其粘贴到其中。然后我用npm install npm@next -g
更新了我的npm,一切又开始工作了。
【讨论】:
【参考方案17】:在 Windows 10 上:
-
按windows键,输入edit the system environment variables然后回车。
点击环境变量...
在打开的标题为 Environment Variables 的窗口的下半部分,您将看到一个标题为 System Variables 的表格,其中有两列,第一列名为 variable。
找到具有变量 Path 的行并单击它。
单击“编辑”将打开一个标题为“编辑环境变量”的窗口。
如果你找到这里
C:\Program Files\nodejs\node_modules\npm\bin
选择它,然后单击右侧的编辑按钮,然后将该字段编辑到您拥有 nodejs 文件夹的路径,在我的情况下,它只是将其缩短为:
C:\Program Files\nodejs
然后我关闭了所有的 cmd 或 powershell 终端,再次打开它们,npm 正在工作。
【讨论】:
【参考方案18】:我知道这是一篇较旧的帖子,但在我写这篇文章时,Node js 的版本是 12.13.1。人们通常会遇到这种情况,因为他们可能已经安装了以前版本的 Node js,它在系统路径中添加了以下内容。
C:\Program Files\nodejs\node_modules\npm\bin
但是,较新的版本需要添加以下内容:-
C:\Program Files\nodejs
我的意思是说你安装 Nodejs 的路径。默认为
C:\Program Files\nodejs
但是,如果您提供了不同的位置,则应将其指向该位置。
【讨论】:
【参考方案19】:只需运行此命令:
npm i npm@latest -g
【讨论】:
欢迎来到 Stack Overflow!您能否详细说明它的作用以及它如何回答问题?【参考方案20】:npm install -g npm@[version] 修复了问题
【讨论】:
【参考方案21】:对于还在讨论这个话题的人:
从官方站点安装节点(检查npm和节点版本以检查 是否安装正确,是在新终端/cmd); 现在安装nvm,当提示是否使用nvm管理当前节点时点击是; 打开新的 cmd 并运行 nvm。【讨论】:
你不需要从官网用nvm安装Node:你可以用nvm运行nvm install latest
安装最新版本的Node。【参考方案22】:
VS2017 中的解决方案(在工具 | 选项...下)
我把路径改成了:C:\Program Files\nodejs
【讨论】:
【参考方案23】:我在windows7上安装node9.0.0时遇到了这个问题 最后的解决方案是删除 npm npm.cmd npx npx.cmd 从 C:\Program Files\nodejs\node_modules\npm\bin 在这样做之前,一种解决方法是运行 C:\程序文件\nodejs\npm 所以这是一种方法,所以看看你是否有和我一样的问题。
【讨论】:
【参考方案24】:在 node_modules 中手动创建一个 npm 文件夹,然后使用修复选项重新运行安装程序。它会复制丢失的文件。
【讨论】:
【参考方案25】:对我来说,上述方法都不起作用,我只是注意到每次我执行“npm install...”时,任何 npm 命令都会停止工作。 所以每次安装,我都必须运行 NodeJS 安装程序并选择“修复”。 直到我找到真正的解决方案:)
【讨论】:
发布解决方案很好,我们也很欣赏这一点。但是如果你用逻辑解释而不是说它会更好神奇地工作 :)【参考方案26】:将 NPM 更新到最新版本对我有用:
npm install npm@latest -g
【讨论】:
【参考方案27】:更改环境路径变量 C:\Program Files\nodejs\node_modules\npm\bin 并打开命令终端和 npm -v 和
【讨论】:
【参考方案28】:我今天在 Linux 服务器中遇到了完全相同的问题。而且原因很简单,因为我在make
之后没有做make install
,而是尝试直接调用生成的npm
。因此 PATH 和一切都是一团糟。
所以对我来说,解决方案就是在make
之后执行make install
并在.node/bin/npm
下运行npm
。
【讨论】:
【参考方案29】:错误:找不到模块'C:\Program Files\nodejs\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js'
看上面,很明显路径有问题。 'C:\Program Files\nodejs\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js' 应该改为--> 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js' 这意味着中间的“\node_modules\npm\bin”被复制了,这导致了这样一个愚蠢的错误。 我通过编辑系统变量来修复它并如上所述更新了 PATH。
【讨论】:
【参考方案30】:同样的问题。
通过复制丢失的文件来解决
C:\Users\UserName\AppData\Roaming\npm\node_modules\npm\bin
到
C:\Users\UserName\node_modules\npm\bin
丢失的文件是
npm npm.cmd npm-cli.js npx npx.cmd npx-cli.js【讨论】:
以上是关于Npm的主要内容,如果未能解决你的问题,请参考以下文章
npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network reques...