npm本地前缀始终设置为当前工作目录



我已经搜索了一段时间,试图找到这个问题的答案。我已经尝试了我所发现的一切有意义的东西。什么都没用。以下是分类:

  • 我在linux上(12.3-RELEASE FreeBSD 12.3-RELEASE r371270 NFSN64 amd64(
  • 我使用npm安装了一个名为hexo-cli的软件包
  • 我的主目录是/home/private
  • 我的全局npm安装目录是/home/private/.npm-global
  • 我的npm prefix -g位置是:/home/private/.npm-global
  • 当我的cwd/home/public/并且我执行hexo时,hexo运行
  • 然后hexo无法找到自己,因为它正在使用npm prefix(这是我的猜测(
  • 当我键入npm prefix时,它总是返回我的cwd
  • 我已经检查了/home/private/.npmrc文件。grep "prefix" /home/private/.npmrc返回:
  • prefix=/home/private/.npm-global
  • grep没有返回其他行或条目
  • npm config set prefix=/home/private/.npm-global只修改全局前缀,不修改我的本地前缀

如何将本地前缀var设置为/home/private/.npm-global

编辑:

这是我的终端在运行hexo:时的输出

[username /home/public]$ hexo
ERROR Cannot find module 'hexo' from '/home/public'
ERROR Local hexo loading failed in /home/public
ERROR Try running: 'rm -rf node_modules && npm install --force'

编辑#2:

忘了提。我还尝试将以下两行添加到我的~/.profile文件中:

export PATH=~/.npm-global/bin:$PATH
export PATH=~/.npm-global/lib/node_modules:$PATH

然后我会source ~/.profile

这完全没有区别。

编辑#3:

修正了第6个要点中的路径。

编辑#4

这是我的npm config list:的输出

[username /home/public]$ npm config list
; "user" config from /home/private/.npmrc
prefix = "/home/private/.npm-global"
; node bin location = /usr/local/bin/node
; node version = v16.16.0
; npm local prefix = /home/public
; npm version = 8.13.0
; cwd = /home/public
; HOME = /home/private/
; Run `npm config ls -l` to show all defaults.

注意上面写着npm local prefix。尝试npm config set local prefix ...不起作用。local prefix不是一个可以赋值的变量。我也尝试过localprefix。这不起作用。

我不知道问题出在哪里。然而,我已经从轨道上用核武器摧毁了一切,然后重新开始。除了/home/public目录中的一个html文件外,我删除了所有内容。我删除了/home/private/.npm-global。我重新创建了/home/private/.npm-global。我遵循了答案中列出的步骤:

全局节点模块安装不正确。未找到命令

具体由Vicente提供的步骤,发布于2019年2月9日16:30。它们是:

[username /home/public]$ mkdir /home/private/.npm-global
[username /home/public]$ npm config set prefix '~/.npm-global'
[username /home/public]$ export PATH=~/.npm-global/bin:$PATH
[username /home/public]$ source ~/.profile
[username /home/public]$ npm install -g hexo-cli

然后我尝试从/home/public:hexo init blog运行

这个命令起作用了,它在cwd中创建了一个blog目录。然而,后来我尝试从我还在的同一个目录中运行hexo server,但没有成功。我将目录更改为/home/public/blog/,然后键入hexo server。这仍然不起作用,只会打印出一些关于您可以运行的几个命令的帮助消息。

他们的网站表示,这通常是由于blog/package.json文件的依赖项中缺少版本行。我编辑了该文件并添加了版本3.2.2,然后将其重新运行为hexo --version。当我这样做的时候,它丢弃了一些带有一堆依赖项及其版本号的Validating config输出。为hexo指定的版本号为hexo: 6.3.0。我再次打开blog/package.json文件,将版本从3.2.2更新为6.3.0。然而,hexo已经为我更新了文件

然后我在/home/public/blog中输入了hexo server,然后hexo服务器启动了。它出现了一些NaN is not a valid date!错误,但服务器仍在运行。

在一个连接到同一台机器的独立终端中,在/home/public/blog目录中,我键入了hexo new "Hello Hexo"。这起到了作用。然后我键入hexo generate来生成静态文件。这也起到了作用。

现在一切似乎都正常了。不确定之前的问题是什么。如果可能的话,我仍然想知道如何将本地前缀设置为特定路径。

最新更新