V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Thatscode99
V2EX  ›  Node.js

react 搭 docker 环境准备入门 遇到 node17 遇到 openssl 问题

  •  
  •   Thatscode99 · 69 天前 · 5101 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。

    macos

    
    Error: error:0308010C:digital envelope routines::unsupported
       ...
      library: 'digital envelope routines',
      reason: 'unsupported',
      code: 'ERR_OSSL_EVP_UNSUPPORTED'
    }
    

    尝试过以下方法都解决不了

    "scripts": {
        "start": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts start",
        "build": "export SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts build"
    }
    

    或者

    "scripts": {
        "start": "react-scripts --openssl-legacy-provider start",
        "build": "react-scripts --openssl-legacy-provider build",
    }
    

    build 后报错,npm start 正常,也尝试过把 node 降级到 16.13.0, brew unlink 和删除高版本,build 后看 docker logs 还是一样明示 Node.js v17.9.0

    请问如果要高版本和低版本正确的应该怎么处理? 谢谢!

    8 条回复    2022-04-19 06:41:04 +08:00
    THESDZ
        1
    THESDZ  
       69 天前   ❤️ 1
    react 搭 docker 环境?
    我理解下:
    1.使用 docker 搭建 react 远程开发环境?
    2.构建 react 工程的镜像?

    使用的 docker 版本?
    openssl 安装了吗?
    是不是使用的源有问题?


    针对问题:
    根据你需要的版本,选择对应的 tag 的镜像
    Thatscode99
        2
    Thatscode99  
    OP
       69 天前
    感谢回复, 我需要构建 react 工程的镜像 我想在本地开发然后直接打包成镜像, docker V4.7, 没有装 openssl, 源没有改动.
    wangyzj
        3
    wangyzj  
       69 天前   ❤️ 1
    我上了 node16 就一堆问题,又退回 14 了
    libook
        4
    libook  
       69 天前   ❤️ 1
    Google 搜一下你的错误信息,就能搜到结局方案。

    比如看一下这个 https://github.com/ant-design/ant-design-pro/issues/9272#issuecomment-1086828874

    或者国内站点看一下 Node v17 的更新 https://developer.51cto.com/article/687259.html

    生产项目建议用 LTS ,除非你对项目的代码、依赖的细节非常了解,像 React 这种稍微复杂一些且应用广泛的依赖最好还是用 LTS 。
    GuangXiN
        5
    GuangXiN  
       69 天前 via Android   ❤️ 1
    Dockerfile 不贴一下吗?
    Thatscode99
        6
    Thatscode99  
    OP
       69 天前
    @GuangXiN
    不好意思, 我不太清楚需要提供什么信息, 下面是 dockerfile
    ```
    FROM node
    WORKDIR /app
    COPY package.json .
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["npm", "start"]
    ```
    GuangXiN
        7
    GuangXiN  
       68 天前
    @Thatscode99 虽然单 COPY 一个 package.json 进去安装,装好了再把其它东西 COPY 进去有一点奇怪,不过看不出来有什么错误。你可以确认一下 Docker 外你本地是否有 node_modules ,不排除你在 npm install 之后又把容器外的 node_modules 给 COPY 进去覆盖掉了,导致 node 的平台依赖不一致。
    Thatscode99
        8
    Thatscode99  
    OP
       68 天前
    @GuangXiN 说一下我解决的方法, 安装 n 把所有的 node 都删了用 n 重装, 这里可能是我有误解的,build image 还是显示 17.9, 问题在于写 dockerfile 的时候拿的镜像是最新,在 dockerfile FROM node:指定版本就解决了.

    另外我请教各位分享一下大家平台开发的是怎样的流程, 先在本地开发测试好再打包放 docker 运行还是直接远程 docker 开发或者其它方式?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2485 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:56 · PVG 16:56 · LAX 01:56 · JFK 04:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.