从命令行安装ESlint报错

30
我安装eslint时遇到以下错误:
npm ERR! Darwin 15.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "eslint"
npm ERR! node v5.5.0
npm ERR! npm  v3.8.8
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/Leviathan/lj/npm-debug.log

我一直没有弄清如何安装eslint并运行该行命令:

eslint --init以创建.eslintrc文件。


1
说句实话,全局安装ESLint几乎从来都不是一个好主意——直接从package.json运行脚本会自动将node_modules/.bin包含在你的PATH中。此外,尽可能避免使用sudo——如果需要,改变或放宽权限即可。/usr/local/应该对能够读写其中内容的用户相当宽容。 - Qix - MONICA WAS MISTREATED
8个回答

31
如果您发现出现eslint: command not found的情况,请尝试:
./node_modules/.bin/eslint --init

如果您不想全局安装,这是一个很好的解决方案! - undefined

25

看起来你正在尝试全局安装,但是你的用户没有访问全局node_modules文件夹的权限。你可以尝试以root身份安装或chown '/usr/local/lib/node_modules'。

作为root安装 -

    sudo npm install -g eslint

更改文件或目录的所有者。

    chown user:group /usr/local/lib/node_modules
    npm install -g eslint

您也可以使用chmod更改/usr/local/lib/node_modules的权限,以允许您的用户访问。

编辑: 尝试在此处回答中提供的解决方案 "Permission Denied" when trying to install ESlint on OSX globally

将以下内容添加到~/.npmrc中:

prefix = ${HOME}/.npm-packages https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md 还必须将${HOME}/.npm-packages/.bin添加到PATH中,以便您的shell知道在哪里查找全局安装的脚本。


我仍然会得到第一个命令的相同错误,之后无法运行eslint --init。当我输入chown...行时,在终端中输入:chown:user:非法用户名如果我用我的用户名代替chown还是得到相同的错误:-bash:username:找不到命令 - wqu
我对使用终端不太熟悉,因此您链接和回复中的建议有些令人困惑。请问我应该在终端中逐行输入什么内容?因为当我尝试这些建议时,总是出现“-bash权限被拒绝”、“找不到命令”或“没有这样的文件或目录”的错误提示。 - wqu
你会使用类似vi或nano的终端编辑器吗?如果不会,你用哪个编辑器呢? - rajatppn
我按照你说的以root身份安装后,它终于能够工作了。奇怪的是,我之前从一个博客文章中尝试过这个方法,但现在它却能工作了?也许是服务器出了问题? - wqu

6
尝试运行npm install eslint --save-dev,然后运行eslint --init。如果遇到任何问题,请告诉我。

我收到了一些警告,还有这个:UNMET PEER DEPENDENCY grunt@~0.4.0当我尝试运行 eslint --init 时,它会显示:-bash: eslint: command not found - wqu
6
你需要从你的项目文件夹 /node_modules/.bin/ 运行 eslint --init。与其他方法相比,这种方法更加安全。 - Raja Sekar

1

也许在 package.json 文件中将依赖项更新到它们的最新版本(包括主要版本更改)会节省您的时间。

npx npm-check-updates -u

或者你可能需要全局安装eslint。

npm i eslint -g

在删除当前项目的节点模块之后

eslint --init

1
你可以在你的目录中安装eslint并运行这个命令。
npm init @eslint/config

0

运行一般更新以升级所有过时的软件包 运行npm outdated查看更新的软件包,然后 运行npm update 还要运行npm-check-updatesnpm install来完成,你的错误可能会被修复


0

原因:Zsh: 找不到命令:eslint

npm install eslint-plugin-react-hooks --save --dev

然后运行:
npm install -g eslint

应该可以工作


-1

eslint --init 命令用于创建 .eslintrc 文件,提示中说要创建 .eslintrc 文件,你可能忘记在 eslintrc 前面加上 . 了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接