gpt4 book ai didi

node.js - 在Alpine Linux上安装Node.js 10 + NPM

转载 作者:行者123 更新时间:2023-12-02 18:10:09 36 4
gpt4 key购买 nike

我正在使用Alpine来构建我的Rails应用程序,并且某些依赖项存在一些问题。

现在,这是我的Dockerfile:

FROM ruby:2.5.1-alpine
ENV BUNDLER_VERSION=2.0.2

RUN apk add --update --no-cache \
binutils-gold \
build-base \
curl \
file \
g++ \
gcc \
git \
less \
libstdc++ \
libffi-dev \
libc-dev \
linux-headers \
libxml2-dev \
libxslt-dev \
libgcrypt-dev \
make \
netcat-openbsd \
nodejs \
openssl \
pkgconfig \
postgresql-dev \
python \
tzdata \
yarn

RUN gem install bundler -v 2.0.2
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle check || bundle install

COPY . /myapp
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 80

CMD ["rails", "server", "-b", "0.0.0.0", "-p", "80"]


我的 entrypoint.sh文件如下所示:
#!/bin/sh
bundle install
rake db:migrate
rake db:seed
npm install
set -e

rm -f /myapp/tmp/pids/server.pid

exec "$@"


关于 npm install,我在尝试安装 puppeteer@3.0.0时遇到问题(由于另一个错误,无法使用3.1.0)。

这是安装3.1.0时的错误:
/myapp # npm install puppeteer@3.1.0

> puppeteer@3.1.0 install /myapp/node_modules/puppeteer
> node install.js

/myapp/node_modules/puppeteer/install.js:175
} catch {
^

SyntaxError: Unexpected token {
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:599:28)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Function.Module.runMain (module.js:676:10)
at startup (bootstrap_node.js:187:16)
at bootstrap_node.js:608:3
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! puppeteer@3.1.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the puppeteer@3.1.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-05-26T01_19_13_984Z-debug.log


基于缺乏成功安装3.1.0 here的经验,我被告知尝试3.0.0

因此,当尝试安装3.0.0时,会发生以下情况:
/myapp # npm install puppeteer@3.0.0

> puppeteer@3.0.0 install /myapp/node_modules/puppeteer
> node install.js

(node:111) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): The "original" argument must be of type function
(node:111) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
+ puppeteer@3.0.0
added 4 packages in 1.264s

根据 this,节点版本旧。当前,我正在运行nodejs 8.9.3,如下所示:
/myapp # node -v
v8.9.3

我尝试安装 nodejs-current,但似乎已卸载了npm。
/myapp # apk add nodejs-current
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/3) Purging nodejs-npm (8.9.3-r1)
(2/3) Purging nodejs (8.9.3-r1)
(3/3) Installing nodejs-current (9.2.1-r1)
Executing busybox-1.27.2-r11.trigger
OK: 300 MiB in 87 packages
/myapp # node -v
v9.2.1
/myapp # npm install puppeteer@3.0.0
/bin/sh: npm: not found

如何在不卸载npm的情况下升级我的nodejs版本?如果我尝试再次安装npm,则会发生以下错误:
/myapp # apk add npm
ERROR: unsatisfiable constraints:
npm (missing):
required by: world[npm]
/myapp # apk add --update npm
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
npm (missing):
required by: world[npm]

最佳答案

像在rubyfile或docker-compose.yml文件中一样,使用ruby,FROM ruby:2.5.1-alpine指定节点的所需版本,否则进行相应的设置。

检查此link以获取合适的版本。

关于node.js - 在Alpine Linux上安装Node.js 10 + NPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62013238/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com