NodeJS 通过npm安装SKPM(Sketch Plugin Manager)

vyswwuz2  于 2023-08-04  发布在  Node.js
关注(0)|答案(3)|浏览(118)

我一直在尝试安装一个npm包,它抛出了一堆我不太熟悉的错误。请注意,这些错误是在执行sudo npm install -g skpm之后出现的

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/skpm/node_modules/keytar/build'
gyp ERR! System Darwin 17.3.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/skpm/node_modules/keytar
gyp ERR! node -v v8.9.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! keytar@4.1.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the keytar@4.1.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/USERNAME/.npm/_logs/2017-12-19T01_53_44_910Z-debug.log

字符串
最初我认为我需要安装keytar来使其工作,但安装后我仍然有同样的错误。

gzjq41n4

gzjq41n41#

**避免使用sudo npm -g install**在gyp编译过程中,你会一次又一次地遇到这样的问题。修复权限是解决方案。

引用自npm docs
您可以使用以下三个选项之一来解决此问题:
1.更改npm默认目录的权限。
1.将npm的默认目录更改为其他目录。
1.使用包管理器安装Node,包管理器将为您处理此问题。在继续之前,您应该备份计算机。

选项一:更改npm默认目录的权限

找到npm目录的路径:npm config get prefix对于许多系统,这将是/usr/local
警告:如果显示的路径只是/usr,请切换到选项2,否则您将混淆您的权限。
将npm目录的所有者更改为当前用户的名称(您的用户名!):
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
这会更改npm和其他一些工具(lib/node_modules、bin和share)使用的子文件夹的权限。

选项2:将npm默认目录更改为其他目录

有时候你不想改变npm使用的默认目录的所有权(即/usr),因为这可能会导致一些问题,例如,如果您与其他用户共享系统。
相反,您可以将npm配置为完全使用不同的目录。在我们的例子中,这将是我们的主文件夹中的一个隐藏目录。
为全局安装创建一个目录:
mkdir ~/.npm-global
配置npm以使用新的目录路径:
npm config set prefix '~/.npm-global'
打开或创建一个~/.profile文件,并添加以下行:
export PATH=~/.npm-global/bin:$PATH
回到命令行,更新系统变量:
source ~/.profile
测试:不使用sudo全局下载一个包。
npm install -g jshint
您可以使用相应的ENV变量(例如:如果不想修改~/.profile):
NPM_CONFIG_PREFIX=~/.npm-global

选项3:使用一个包管理器来为你处理这个问题。

如果你在Mac OS上进行Node的全新安装,你可以通过使用Homebrew包管理器来完全避免这个问题。Homebrew使用正确的权限设置开箱即用的东西。
brew install node

siv3szwd

siv3szwd2#

通常情况下,EACCES: permission denied会在不提供权限的情况下尝试全局安装软件包(使用-g)。假设你在操作系统上使用sudo,试着调用

sudo npm install -g skpm

字符串
或者,如果你不想让它全球化

npm install skpm

xlpyo6sf

xlpyo6sf3#

我发现了为什么skpm没有安装的问题。

确保安装了x-code +命令行工具访问

这修复了问题并安装了SKPM。

相关问题