我正在尝试将 nodeJs 安装到我的 Ubuntu 14.04 中以使用 GruntJs。
我已经阅读了关于这样做的 Ubuntu different way (issues?),所以这是我为安装它所做的:
sudo apt-get install npm
sudo npm install -g grunt-cli
之后输入 grunt 我得到了错误:
/usr/bin/env: node: No such file or directory
所以,我试过:
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
sudo apt-get update
再试一次,仍然得到错误,我试过了:
sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/
sudo apt-get install -y nodejs
我收到了这条消息:
nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.
我确实尝试了清理以防万一:
sudo apt-get autoremove
但是不,错误仍然存在:当我输入 grunt 我仍然得到 /usr/bin/env: node: No such file or directory
我应该怎么办?
sudo apt-file find /usr/bin/node
列出 nodejs: /usr/bin/node
。也就是说,安装 nodejs
软件包会安装预期的 node
可执行程序。
问题不在于节点的版本。相反,这是在 Ubuntu 中默认安装 NodeJS 的方式。在 Ubuntu 中运行 Node 应用程序时,您必须运行 nodejs somethign.js
而不是 node something.js
所以终端调用的应用名称是nodejs
而不是node
。这就是为什么需要一个符号链接来简单地将所有作为 node
接收的命令转发到 nodejs
。
sudo ln -s /usr/bin/nodejs /usr/bin/node
我认为你应该升级最新的节点版本
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
n
不是与 Node.JS 相关联的命令。
laravel
项目从 windows
机器复制到 ubuntu 16.04
并且 laravel mix
遇到了 npm run watch
问题,这个解决方案对我有用,现在问题消失了
如果您使用的是 nvm
节点版本管理器,请使用此命令创建符号链接:
sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
第一个命令为节点创建符号链接
第二个命令为 npm 创建一个符号链接
/usr/local/bin/node
如果您能够使用 nodejs 命令访问 ubuntu 终端上的节点,则可以使用以下方法简单地解决此问题 - 创建 nodejs 和节点的符号链接使用
ln -s /usr/bin/nodejs /usr/bin/node
这可能会解决问题
做就是了
$ sudo apt-get install nodejs-legacy
它将开始工作。
如果您已经安装了 nodejs(检查 which nodejs
)并且不想安装另一个包,您可以以 root 身份:
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
我发现这通常是一个命名错误,如果你从包管理器安装你的 bin 可能被称为 nodejs 所以你只需要像这样符号链接它
ln -s /usr/bin/nodejs /usr/bin/node
根据您安装节点的方式,大多数情况下它可能不在 /usr/bin/ 中,在我自己的情况下,我使用 nvm 进行安装,因此我的节点位于 ./nvm/versions 中。
使用此命令 which node
我找到了路径,但为了使工作更轻松,您可以运行此命令。
nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node
上面的命令将获取您的节点的位置并为您创建一个链接。
当我使用 gulp 时,我得到了这个错误。
~$ gulp
/usr/bin/env: 'node': 没有这样的文件或目录
这是通过执行以下命令删除的,您必须记住 /usr/bin 目录具有所有权限。
~$ ln -s /usr/bin/nodejs /usr/bin/node
这对我有用..
有两种解决方案:
a) 将 PATH 变量设置为包含“/usr/local/bin”
export PATH="$PATH:/usr/local/bin"
b) 创建一个指向“/usr/bin”的符号链接,它已经在你的 PATH 中
ln -s /usr/bin/nodejs /usr/bin/node
我希望它有所帮助。
虽然 ln -s
显然是最简单的解决方法,但有一点解释:
由于与另一个包冲突,来自 Ubuntu 存储库的可执行文件称为 nodejs 而不是 node。在运行软件时请记住这一点。
安装 sudo apt-get install nodejs
时会出现此建议。
所以其他一些已知的工具(我不知道它是做什么的。虽然 ubuntu 存储库知道它,但默认情况下它不会在 16.04 中安装)占用该命名空间。
如果 Ubuntu 提供了一个如何“干净地”解决这个问题的建议,如果不是通过手工来解决这个包会做什么,那就太好了。 (碰撞仍然是碰撞......如果+何时发生)
请按照以下命令解决问题。
在终端中:
清理整个 NPM 缓存: $ sudo npm cache clean -f sudo npm install -gn 安装 Node.js 的最新稳定版本: sudo n stable
现在安装了最新版本的 Node.js。使用以下命令检查版本:
node -v
如果它是使用 snap 安装的,
sudo ln -sfn /snap/node/current/bin/node /usr/bin/node
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
对于我的案例链接不起作用如下
ln -s /usr/bin/nodejs /usr/bin/node
但是您可以以 root 身份打开 /usr/local/bin/lessc,并将第一行从 node 更改为 nodejs。
-#!/usr/bin/env 节点 +#!/usr/bin/env nodejs
只需通过此命令重命名命令或文件名 ln -s /usr/bin/nodejs /usr/bin/node
对我来说,接受的答案还没有奏效。我按照这里的建议开始:
ln -s /usr/bin/nodejs /usr/bin/node
执行此操作后,我收到以下错误:
/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = require('update-notifier')({pkg}) ^^^ SyntaxError: Block-scoped declarations (let, const,函数、类)在 Object.Module._extensions..js(module.js: 417:10) 在 Module.load (module.js:344:32) 在 Function.Module._load (module.js:301:12) 在 Function.Module.runMain (module.js:442:10) 在启动时 ( node.js:136:18) 在 node.js:966:3
解决方案是从 https://nodejs.org/en/download/ 下载最新版本的节点。
然后我做了:
sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1
现在更新终于成功了:npm -v
从 3.2.1 更改为 6.4.1
sudo apt-get install nodejs-legacy
也创建此链接,请参阅 packages.debian.org/sid/nodejs-legacy 处的说明which node
,以便获得节点的正确路径。所以命令是ln -s "$(which node)" /usr/bin/node