我已经搜索了一段时间,试图找到这个问题的答案。我已经尝试了我所发现的一切有意义的东西。什么都没用。以下是分类:
- 我在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
来生成静态文件。这也起到了作用。
现在一切似乎都正常了。不确定之前的问题是什么。如果可能的话,我仍然想知道如何将本地前缀设置为特定路径。