在 Nx 工作区中运行 NestJS 构建产物时出错

6

当我尝试在Nx工作区中创建的NestJS应用程序的构建产物在无node_modules文件夹的存储库之外的任何地方运行时,我遇到了错误。

复现步骤:

  1. 克隆此存储库https://github.com/baumgarb/proxy-example
  2. 运行npm install以安装所有包
  3. 运行ng build backend
  4. 进入dist/apps/backend文件夹
  5. 在该文件夹中运行node main.js,您将看到后端成功启动
  6. 现在将main.js复制到不同于克隆存储库的位置(例如/tmpc:\temp)
  7. 在新位置再次运行node main.js,您将遇到以下错误:

internal/modules/cjs/loader.js:775
    throw err;
    ^

Error: Cannot find module 'tslib'
Require stack:
- /home/bernhard/main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
    at Function.Module._lo[ad (internal/modules/cjs/loader.js:677:27)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
    ...[omitted for brevity] {
  code: 'MODULE_NOT_FOUND',
}

您也可以尝试在Docker容器中运行构建工件,但会导致相同的错误。

这是我本地机器和WSL之间的比较:

enter image description here

有人能告诉我问题所在以及如何解决吗?非常感谢!


1
有没有任何关于此问题修复的更新? - Kevin192291
1个回答

0

我在 Nx 工作区中为 Nestjs 应用程序构建 Docker 镜像时遇到了问题。

我采取了以下解决方法:

# BUILD

FROM node:16.11.1-slim as build

WORKDIR /app/nx

COPY nx /app/nx

RUN npm install -g nx@13.1.3 && \
    npm install && \
    nx build backend


# SERVE

FROM node:16.11.1-slim

ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}

WORKDIR /app/backend

COPY --from=build /app/nx/dist/apps/backend /app/backend

RUN npm install \
    tslib@2.3.1 \
    @nestjs/common@7.6.18 \
    @nestjs/core@7.6.18 \
    @nestjs/platform-express@7.6.18 \
    @nestjs/axios@0.0.3

EXPOSE 3333
CMD ["node", "/app/backend/main"]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接