Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法运行节点:没有这样的文件或目录_Node.js_Docker_Maven_Ubuntu_Npm - Fatal编程技术网

Node.js 无法运行节点:没有这样的文件或目录

Node.js 无法运行节点:没有这样的文件或目录,node.js,docker,maven,ubuntu,npm,Node.js,Docker,Maven,Ubuntu,Npm,我从imagemaven:3-alpine在docker容器中执行mvn clean install来构建应用程序。在pom.xml中,我使用了前端maven插件,因为我需要安装节点和npm,然后运行npm安装来构建前端(角度) com.github.eirslett 前端maven插件 1.9.1 v12.16.1 安装节点和npm 安装节点和npm 产生资源 npm安装 npm 产生资源 安装 ./ ng构建 npm 编译 运行脚本生成 节点和npm将正确安装,但当它运行npm inst

我从image
maven:3-alpine
在docker容器中执行
mvn clean install
来构建应用程序。在pom.xml中,我使用了
前端maven插件
,因为我需要安装
节点
npm
,然后运行
npm安装
来构建前端(角度)


com.github.eirslett
前端maven插件
1.9.1
v12.16.1
安装节点和npm
安装节点和npm
产生资源
npm安装
npm
产生资源
安装
./
ng构建
npm
编译
运行脚本生成
节点和npm将正确安装,但当它运行
npm install
时,返回一个错误:
无法运行任务:“npm install”失败。java.io.IOException:无法运行程序“/var/lib/jenkins/workspace/myProject/node/node”(在目录“/var/lib/jenkins/workspace/myProject”中):错误=2,没有这样的文件或目录->[Help 1]

如果我进入容器(docker exec)并尝试手动运行npm install,则会再次出现相同的错误。当我检查node是否正确安装时,我会看到文件
/var/lib/jenkins/workspace/myProject/node/node
在那里,但是当我尝试从/node目录内部运行node时,假设
node-v
它再次显示我
没有这样的文件或目录
。我不明白为什么会这样,因为node就在那里!!当前用户也有权执行此文件


我对这个问题做了一些搜索,有人说用这种方式在ubuntu上安装node是不正确的,但这只发生在我的容器中。如果我在我的本地机器上尝试同样的方法(它也是ubuntu),那么node就可以工作。

当你自己运行
node-v
时,它会试图在你的路径上找到node。以这种方式安装via maven不会为您带来好处

,了解如何在Linux上做到这一点

如果您的用户没有这样做的权限(我怀疑这可能是在jenkins中运行的情况),您可以使用节点和npm二进制文件的完整或相对路径来运行所需的命令

e、 g.如果您在目录
/var/lib/jenkins/workspace/myProject
中有一个文件
test.js
,则该目录中可以运行:

./node/node test.js



旁白:使用Maven在您的CI环境中安装NPM&Node的更好解决方案是使用Docker images或for Jenkins。

当您自己运行
节点-v
时,它会尝试在您的路径上查找节点。以这种方式安装via maven不会为您带来好处

,了解如何在Linux上做到这一点

如果您的用户没有这样做的权限(我怀疑这可能是在jenkins中运行的情况),您可以使用节点和npm二进制文件的完整或相对路径来运行所需的命令

e、 g.如果您在目录
/var/lib/jenkins/workspace/myProject
中有一个文件
test.js
,则该目录中可以运行:

./node/node test.js



旁白:使用Maven在CI环境中安装NPM&Node的更好解决方案是使用Docker映像,或者对于Jenkins。

它是否在文件模式下设置了执行位?看起来是这样的:-rwxr-xr-x 1根根46228688 Jun 4 10:40节点drwxr-xr-x 3 108 112 4096 Jun 3 13:37节点\u模块-rwxr--r--1 108 112 893 Jun 3 13:37 npm-rwxr--r--1 108 112 464 Jun 3 13:37 npm.cmd我试着以root用户身份运行它。它是否在文件模式下设置了执行位?它看起来是这样的:-rwxr-xr-x 1 root root 46228688 Jun 4 10:40 node drwxr-xr-x 3 108 112 4096 Jun 3 13:37 node\u modules-rwxr--r--1 108 112 893 Jun 3 13:37 npm-rwxr--1 108 112 464 Jun 3 13:37npm.cmd,我尝试以root用户身份运行它。正如我所说,我还尝试在主机上启动相同的容器,并尝试使用
docker exec
输入它,并尝试使用root用户执行节点。它既不适用于绝对路径,也不适用于相对路径。我也知道还有其他方法可以做到这一点,但我仍然需要了解这里的问题是什么。整件事都在我的主机上用ubuntu工作,为什么它不能用alpine docker图像工作?!啊,很抱歉,你的问题不清楚,你刚才说“但是当我尝试手动运行时,让我们说节点-v”-以为你试图在它自己的计算机上执行该命令是的,对不起。我编辑了我的问题以便更清楚。正如我所说,我还尝试在主机上启动同一个容器,并尝试使用
docker exec
输入它,并尝试使用root用户执行节点。它既不适用于绝对路径,也不适用于相对路径。我也知道还有其他方法可以做到这一点,但我仍然需要了解这里的问题是什么。整件事都在我的主机上用ubuntu工作,为什么它不能用alpine docker图像工作?!啊,很抱歉,你的问题不清楚,你刚才说“但是当我尝试手动运行时,让我们说节点-v”-以为你试图在它自己的计算机上执行该命令是的,对不起。我编辑了我的问题以便更清楚。thnx。
/var/lib/jenkins/workspace/myProject/node/node