发生系统错误:uv_os_get_passwd 返回 ENOENT(没有那个文件或目录)
A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
我有一个 jenkin 管道,当我 运行 ember 构建时,它 运行 在 docker 代理上运行,我收到此错误。
知道我该怎么做。我用
image 'node:latest'
我收到这个错误
+ ./node_modules/.bin/ember build --env production
WARNING: Node v14.3.0 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
Could not start watchman
Visit https://ember-cli.com/user-guide/#watchman for more info.
Building
A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
原来我需要做的就是添加 docker 从 /etc/passwd 到 /etc/passwd 的卷映射。像这样:
agent {
docker {
image 'node:12'
args "-v /etc/passwd:/etc/passwd"
reuseNode true
}
}
在容器中使用 node-gyp
时,此问题可能掩盖了另一个缺少路径或只读路径的问题。
os.userInfo()
用法是 eaccesFallback 的一部分,只有在无法访问文件路径时才应调用。
打开详细日志记录 (npm_config_loglevel=verbose
) 以记录无法访问的路径,mount/fix 改为记录该路径。
根据我的经验,这解决了根本问题并避免了安装 /etc/passwd
,这可能并不总是可行或可能被认为是不安全的。
我在使用 electron-builder
时在 k8s pods 中特别看到了这一点,并且不得不为 .electron-gyp
文件夹创建一个空卷挂载:
volumeMounts:
- name: electron-cache
mountPath: /.electron-gyp
volumes:
- name: electron-cache
emptyDir: {}
我有一个 jenkin 管道,当我 运行 ember 构建时,它 运行 在 docker 代理上运行,我收到此错误。 知道我该怎么做。我用
image 'node:latest'
我收到这个错误
+ ./node_modules/.bin/ember build --env production
WARNING: Node v14.3.0 is not tested against Ember CLI on your platform. We recommend that you use the most-recent "Active LTS" version of Node.js. See https://git.io/v7S5n for details.
Could not start watchman
Visit https://ember-cli.com/user-guide/#watchman for more info.
Building
A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
原来我需要做的就是添加 docker 从 /etc/passwd 到 /etc/passwd 的卷映射。像这样:
agent {
docker {
image 'node:12'
args "-v /etc/passwd:/etc/passwd"
reuseNode true
}
}
在容器中使用 node-gyp
时,此问题可能掩盖了另一个缺少路径或只读路径的问题。
os.userInfo()
用法是 eaccesFallback 的一部分,只有在无法访问文件路径时才应调用。
打开详细日志记录 (npm_config_loglevel=verbose
) 以记录无法访问的路径,mount/fix 改为记录该路径。
根据我的经验,这解决了根本问题并避免了安装 /etc/passwd
,这可能并不总是可行或可能被认为是不安全的。
我在使用 electron-builder
时在 k8s pods 中特别看到了这一点,并且不得不为 .electron-gyp
文件夹创建一个空卷挂载:
volumeMounts:
- name: electron-cache
mountPath: /.electron-gyp
volumes:
- name: electron-cache
emptyDir: {}