由于 webpack 构建过程中的类型错误 (TS2322),我的无服务器 (sls) 应用程序无法在 Docker 容器中构建。在本地构建时,没有错误并且应用程序按设计运行。
错误示例:
ERROR in /app/src/controllers/account.controller.ts
./src/controllers/account.controller.ts
[tsl] ERROR in /app/src/controllers/account.controller.ts(19,9)
TS2322: Type 'string' is not assignable to type 'number'.
我认为这可能与分配为的容器的 WORKDIR/app
和 webpack.config.js 有关,但我不确定从哪里开始进行故障排除。
背景:
我的无服务器应用程序使用 npm 脚本在本地成功构建:“ export AWS_REGION=us-east-1 && export IS_ON_LOCAL_SERVER=true && export TZ=UTC && sls offline start --stage dev
”。当我在 Docker 容器中运行此脚本时,它会在 webpack 构建过程中导致大量类型错误。
我的 Dockerfile(如下)使用 node:10.10 并且我在全球范围内安装无服务器。我也尝试过使用 node:8.16 并且我得到了相同的构建错误(在容器中使用 10.10 我没有得到 npm 警告,因为我使用 8.16 得到了 npm 警告)。
Dockerfile:
# base image
FROM node:10.10
# update
RUN apt-get update && apt-get install -y --no-install-recommends vim && apt-get clean
# set working directory
WORKDIR /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# add app
COPY . /app
# install
COPY package.json /app/package.json
RUN npm install serverless -g && npm i
# start app
CMD npm run local-server
码头工人组成:
version: '3.7'
services:
backend:
container_name: omp_backend
build:
context: ./backend
dockerfile: Dockerfile
expose:
- 3001
volumes:
- './backend:/app'
- '/app/node_modules'
ports:
- '3001:3001'