同事告诉我说,npm无法下载一个私有包,返回错误码500。

  1. 试了一下,确实如此。

    1
    2
    3
    4
    5
    $ npm install -g nrm # 用nrm来切换镜像
    $ nrm add toplinker http://140.197.105.14:4873/ # 添加私有镜像
    $ nrm use toplinker
    $ npm install @topibd/core
    # 下载失败
  2. 怀疑是不是需要登录。

    1
    2
    3
    $ npm login
    $ npm install @topibd/core
    # 仍然失败
  3. 检查一下verdaccio的配置,我们的verdaccio是在docker中的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ ssh xxx@xxx
    $ docker exec -it verdaccio sh
    $ cat /verdaccio/conf/config.yaml
    packages:
    '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    proxy: npmjs

    并没有做限制。

  1. 通过网页打开 http://140.197.105.14:4873

    首页能显示所有包,但是打开包的详情页会出现“Oops, The package you are trying to access does not exist.”

  2. 查看了下docker内的包文件,都在

    1
    2
    $ docker exec -it verdaccio sh
    $ cd /verdaccio/storage/
  3. Google了下,说可能是文件夹权限的问题。试一下

    1
    2
    $ docker exec --user root -it verdaccio sh
    $ chown verdaccio: /verdaccio/ -R
  4. 再试一下,成功了。

Reference