Итак, у меня есть приложение create-react-app-ts
, которое я хотел бы Dockerize и разместить на Zeit Now.
Все отлично работает локально, работает yarn tsc
и react-scripts-ts build
отлично работает.
Создание образа Docker также отлично работает из следующего Dockerfile:
FROM mhart/alpine-node:10.9
WORKDIR /usr/src
ARG REACT_APP_API_ENDPOINT
ARG NODE_ENV
COPY yarn.lock package.json ./
RUN yarn
COPY . .
RUN yarn build && mv build /public
Однако при публикации в Now сценарий компиляции завершается неудачно при компиляции Typescript, что приводит к появлению ошибок компиляции для большинства файлов впроект.
Я могу также воспроизвести это локально, если я установлю ENV NODE_ENV production
в моем Dockerfile чуть выше WORKDIR...
.
Так что может показаться, что Typescript или react-scripts-ts
действуют иначе, когда NODE_ENV=production
.Я никогда не сталкивался с этой ошибкой раньше, и я не знаю, как ее отладить.Запуск NODE_ENV=production tsc
или NODE_ENV=production react-scripts-ts build
также отлично работает локально.
Я использую Typescript v 3.0.1 со следующей конфигурацией:
{
"compilerOptions": {
"baseUrl": ".",
"outDir": "build/dist",
"module": "esnext",
"target": "es6",
"lib": ["es6", "dom", "esnext.asynciterable"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"allowSyntheticDefaultImports": true,
"strict": true
},
"exclude": ["node_modules", "build", "scripts", "acceptance-tests", "webpack", "jest", "src/setupTests.ts"]
}
Любой совет будет высоко оценен!:)
EDIT : Добавлены env var args в Dockerfile.Изначально он был оставлен для краткости, но в итоге оказался частью проблемы и решения