Knex(或任何 NPM 包)如何 运行 不同版本的节点?
How Can Knex (or Any NPM Package) Run a Different Version of Node?
我正在尝试使用 Knex 的 seed:run
命令(即 npx knex seed:run
),并且在我的种子文件中添加了这一行,它记录了它正在使用的 Node 版本 运行 与:
console.log(process.version);
现在,如果我 运行 在 Node 命令提示符本身 (node
) 中 与 相同的代码行,我得到:
v14.2.0
同样,当我运行node --version
它正确returnsv14.2.0
。
但是,当 Knex 运行 是我的种子文件时,我看到的是:
v11.15.0
任何人都可以解释一下 how/why Knex 使用的是不同版本的 Node,我怎样才能让它停止?
P.S。我已经尝试清除我的 node_modules
文件夹并通过 npm i
重新安装,但 Knex 继续以某种方式使用旧节点。 Knex 本身已安装最新版本 (0.21.1
)。
如果您有在特权帐户 (root) 中运行的全局安装,以及针对当前用户的本地安装,则可能会发生这种情况。
您可能正在使用某些节点版本控制工具来管理 nodejs 版本,它会为覆盖默认配置的节点的托管版本创建一个符号 link。有很多工具可以做到这一点,例如 nvm、n.
Danizavtz 的回答并没有为我解决问题,但确实为我指明了正确的方向。我意识到我 确实 有两个版本的 Node:一个是 Linux 安装的(使用 apt-get
),另一个是我自己安装的(以获得更新的节点版本)。
我的解决方案是通过以下方式删除 Node 的系统版本:
sudo apt-get remove node
这给我留下了一个可以工作的节点……但它删除了我的 npm
。我想我可以重新安装所有东西,但因为我已经有 node
并且只需要 npm
,我下载了最新的 Node 安装并使用其中的 node
安装 npm
。我在有和没有 sudo
的情况下都这样做了(我不确定是否有必要在没有 sudo
的情况下这样做,因为它没有解决问题):
sudo ~/node-v14.3.0-linux-x64/bin/node ~/node-v14.3.0-linux-x64/bin/npm i -g npm
在那之后,当我 运行 npx
/npm
!
时,我终于得到了预期的 Node 版本
我正在尝试使用 Knex 的 seed:run
命令(即 npx knex seed:run
),并且在我的种子文件中添加了这一行,它记录了它正在使用的 Node 版本 运行 与:
console.log(process.version);
现在,如果我 运行 在 Node 命令提示符本身 (node
) 中 与 相同的代码行,我得到:
v14.2.0
同样,当我运行node --version
它正确returnsv14.2.0
。
但是,当 Knex 运行 是我的种子文件时,我看到的是:
v11.15.0
任何人都可以解释一下 how/why Knex 使用的是不同版本的 Node,我怎样才能让它停止?
P.S。我已经尝试清除我的 node_modules
文件夹并通过 npm i
重新安装,但 Knex 继续以某种方式使用旧节点。 Knex 本身已安装最新版本 (0.21.1
)。
如果您有在特权帐户 (root) 中运行的全局安装,以及针对当前用户的本地安装,则可能会发生这种情况。 您可能正在使用某些节点版本控制工具来管理 nodejs 版本,它会为覆盖默认配置的节点的托管版本创建一个符号 link。有很多工具可以做到这一点,例如 nvm、n.
Danizavtz 的回答并没有为我解决问题,但确实为我指明了正确的方向。我意识到我 确实 有两个版本的 Node:一个是 Linux 安装的(使用 apt-get
),另一个是我自己安装的(以获得更新的节点版本)。
我的解决方案是通过以下方式删除 Node 的系统版本:
sudo apt-get remove node
这给我留下了一个可以工作的节点……但它删除了我的 npm
。我想我可以重新安装所有东西,但因为我已经有 node
并且只需要 npm
,我下载了最新的 Node 安装并使用其中的 node
安装 npm
。我在有和没有 sudo
的情况下都这样做了(我不确定是否有必要在没有 sudo
的情况下这样做,因为它没有解决问题):
sudo ~/node-v14.3.0-linux-x64/bin/node ~/node-v14.3.0-linux-x64/bin/npm i -g npm
在那之后,当我 运行 npx
/npm
!