【发布时间】:2021-09-18 14:39:21
【问题描述】:
所以我使用的是 lerna,并且在本地一切正常,但是当我尝试构建映像并通过 docker 运行它时,它似乎无法正常工作
FROM node:16-alpine3.11
ENV NODE_ENV=production
COPY . /app
WORKDIR /app
RUN npm i -g lerna
RUN lerna bootstrap
CMD npm run dev:all
这是 Dockerfile,这是 dockerignore 文件
node_modules
packages/api/node_modules
packages/web/node_modules
packages/web/.next
这是我拥有的项目结构(使用带有 lerna 的 npm 工作区 [所以我可以并行运行东西])
当我尝试运行图像/旋转容器时(抱歉,如果条款不正确,我对 Docker 还很陌生,第一次使用它)这是我得到的输出
docker run locus
> dev:all
> lerna run --parallel dev
lerna notice cli v4.0.0
lerna info Executing command in 2 packages: "npm run dev"
api: > api@1.0.0 dev
api: > ts-node-dev --respawn -r tsconfig-paths/register src/index.ts
web: > web@1.0.0 dev
web: > next dev
web: ready - started server on 0.0.0.0:3000, url: http://localhost:3000
web: info - Using webpack 5. Reason: Enabled by default https://nextjs.org/docs/messages/webpack5
api: [INFO] 17:31:43 ts-node-dev ver. 1.1.8 (using ts-node ver. 9.1.1, typescript ver. 4.3.5)
api: Error: Cannot find module 'tsconfig-paths/register'
api: Require stack:
api: - internal/preload
api: at Function.Module._resolveFilename (node:internal/modules/cjs/loader:927:15)
api: at Function.Module._load (node:internal/modules/cjs/loader:772:27)
api: at Module.require (node:internal/modules/cjs/loader:999:19)
api: at Module._preloadModules (node:internal/modules/cjs/loader:1247:12)
api: at loadPreloadModules (node:internal/bootstrap/pre_execution:468:5)
api: at prepareMainThreadExecution (node:internal/bootstrap/pre_execution:75:3)
api: at node:internal/main/run_main_module:7:1
web: It looks like you're trying to use TypeScript but do not have the required package(s) installed.
web: Please install typescript by running:
web: npm install --save-dev typescript
web: If you are not trying to use TypeScript, please remove the tsconfig.json file from your package root (and any TypeScript files in your pages directory).
lerna ERR! npm run dev exited 1 in 'web'
lerna ERR! npm run dev stdout:
> web@1.0.0 dev
> next dev
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info - Using webpack 5. Reason: Enabled by default https://nextjs.org/docs/messages/webpack5
lerna ERR! npm run dev stderr:
It looks like you're trying to use TypeScript but do not have the required package(s) installed.
Please install typescript by running:
npm install --save-dev typescript
If you are not trying to use TypeScript, please remove the tsconfig.json file from your package root (and any TypeScript files in your pages directory).
lerna ERR! npm run dev exited 1 in 'web'
lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
我不确定这是我构建项目的方式还是其他方式(当我执行 npm install 时也会发生错误,而且我已经将 typescript 和 tsconfig-paths 作为开发部门)
【问题讨论】:
-
您是否尝试在您的
RUN lerna bootstrap之前添加RUN npm install? -
不,我没有只是将
lerna bootstrap替换为npm installlemme try :D
标签: node.js typescript docker npm next.js