【问题标题】:Unable to install NPM inside Docker无法在 Docker 中安装 NPM
【发布时间】:2021-06-08 21:41:53
【问题描述】:

我有一个在本地构建的项目,我尝试创建一个 Docker 映像。 在我的项目中,我安装了 NPM 包,我的包文件位于: \src\Core.Blazor\package.json

但是,当我尝试构建我的 Docker 映像时,它失败并出现以下错误:

npm ERR! code ENOLOCAL
npm ERR! Could not install "src/Core.Blazor/package.json" as it is not a directory and is not a file with a name ending in .tgz, .tar.gz or .tar

我也加入了 Dockerfile:

### >>> GLOBALS
ARG ENVIRONMENT="Production"
ARG PROJECT="PyProd.IdentityServer.Host"
### <<<

# debian buster - AMD64
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build

### >>> IMPORTS
ARG ENVIRONMENT
ARG PROJECT
### <<<

ARG NUGET_CACHE=https://api.nuget.org/v3/index.json
ARG NUGET_FEED=https://api.nuget.org/v3/index.json

# Copy sources
COPY src/ /app/src
ADD common.props /app

WORKDIR /app

# Installs NodeJS to build typescripts
RUN apt-get update
RUN apt-get install curl
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install -y nodejs
RUN npm install /app/src/Core.Blazor/package.json

尝试使用以下方法修复后,我也收到错误消息:

RUN npm install /app/src/SmartPixel.Core.Blazor/

这是我得到的错误:

> aspnet-parcel-exp@0.1.0 build /app/src/SmartPixel.Core.Blazor
  > parcel build wwwroot/assets/blazorcore.js --out-dir wwwroot/dist/
  
  sh: 1: parcel: not found
  npm ERR! code ELIFECYCLE
  npm ERR! syscall spawn
  npm ERR! file sh
  npm ERR! errno ENOENT
  npm ERR! aspnet-parcel-exp@0.1.0 build: `parcel build wwwroot/assets/blazorcore.js --out-dir wwwroot/dist/`
  npm ERR! spawn ENOENT
  npm ERR! 
  npm ERR! Failed at the aspnet-parcel-exp@0.1.0 build script.
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
  npm WARN Local package.json exists, but node_modules missing, did you mean to install?

我也加入了 package.json 文件:

{
  "name": "aspnet-parcel-exp",
  "private": true,
  "version": "0.1.0",
  "devDependencies": {
    "parcel": "1.12.3"
  },
  "includePaths": [
    "./wwwroot/assets/js",
    "./wwwroot/assets/css"
  ],
  "scripts": {
    "build": "parcel build wwwroot/assets/blazorcore.js --out-dir wwwroot/dist/",
    "watch": "parcel watch wwwroot/assets/blazorcore.js --out-dir wwwroot/dist/"
  }
}

【问题讨论】:

    标签: node.js docker npm dockerfile parceljs


    【解决方案1】:

    我不知道 NodeJS,但正如你的错误所说:

    npm 错误!无法安装“src/Core.Blazor/package.json”,因为 它不是目录 并且 不是名称以 .tgz、.tar.gz 或 .tar 结尾的文件

    我相信你应该把你的 Dockerfile 改成这样:

    RUN npm install /app/src/Core.Blazor/
    

    甚至这个:

    RUN npm install /app/src/Core.Blazor
    

    因为第二个没有斜杠。

    【讨论】:

    • 谢谢。我已经尝试过,但正如我也简要解释过的那样,我遇到了另一个错误。我已经用更多细节更新了描述。
    • 恐怕我不是 NodeJS 开发者。您的代码似乎有问题,而不是 docker。
    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多