在没有 Nest 特定包的 NEST JS 中使用 NPM 包

问题描述

在我的 Nest JS 应用程序中,我想添加没有任何 nest 特定实现的库。 例如锋利或吉普。

我已经在我的项目中添加了这些

npm i jimp.

并像这样导入到我的代码中。

import Jimp from 'jimp';

当我在本地构建和提供服务时它工作正常,但是当我从 docker 提供它并构建生产版本时,我收到以下错误

> planiac@0.0.0 serve /app
backend_1  | > node dist/apps/api/main.js
backend_1  | 
backend_1  | internal/modules/cjs/loader.js:965
backend_1  |   throw err;
backend_1  |   ^
backend_1  | 
backend_1  | Error: Cannot find module 'jimp'
backend_1  | Require stack:
backend_1  | - /app/dist/apps/api/main.js
backend_1  |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:962:15)
backend_1  |     at Function.Module._load (internal/modules/cjs/loader.js:838:27)
backend_1  |     at Module.require (internal/modules/cjs/loader.js:1022:19)
backend_1  |     at require (internal/modules/cjs/helpers.js:72:18)
backend_1  |     at Object.<anonymous> (/app/dist/apps/api/main.js:2687:18)
backend_1  |     at __webpack_require__ (/app/dist/apps/api/main.js:20:30)
backend_1  |     at Object.<anonymous> (/app/dist/apps/api/main.js:1874:62)
backend_1  |     at __webpack_require__ (/app/dist/apps/api/main.js:20:30)
backend_1  |     at Object.<anonymous> (/app/dist/apps/api/main.js:3423:73)
backend_1  |     at __webpack_require__ (/app/dist/apps/api/main.js:20:30) {
backend_1  |   code: 'MODULE_NOT_FOUND',backend_1  |   requireStack: [ '/app/dist/apps/api/main.js' ]
backend_1  | }

解决方法

在您的 Docker 中,您的 jimp 中似乎没有加载 node_modules。尝试使用 npm i jimp 选项运行 --save,以便将包保存到 package-lock.json,并确保您的 Docker 构建运行 npm install(它可能已经这样做了,因为您是使用嵌套)