«Ошибка: не удается найти модуль« @ app / foo »в режиме prod при использовании libs - PullRequest
1 голос
/ 29 мая 2019

У меня есть проект, в котором я построил несколько модулей.Обнаружив, что nestjs имеет команду lib cli, я перенес все из них, чтобы использовать этот стиль.Теперь мое приложение не может найти эти модули при использовании npm run start:prod.

Error: Cannot find module '@app/foo'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/Users/xxx/Development/nest-test/dist/src/app.service.js:13:15)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)

. Я создал проект с базовым кодом и одной библиотекой для воспроизведения проблемы: https://github.com/hkeio/nestjs-test

Evenкогда я связываю пакет, узел не может найти модуль.

cd libs/foo
npm link
cd ../..
npm link @app/foo

При запуске NODE_DEBUG=* npm run start:prod я вижу, что он смотрит в нужное место, но не находит модуль:

MODULE 12494: looking for "@app/foo" in [
    "/Users/xxx/Development/nest-test/dist/src/node_modules",
    "/Users/xxx/Development/nest-test/dist/node_modules",
    "/Users/xxx/Development/nest-test/node_modules",
    "/Users/xxx/Development/node_modules",
    "/Users/xxx/node_modules",
    "/Users/node_modules",
    "/node_modules",
    "/Users/xxx/.node_modules",
    "/Users/xxx/.node_libraries",
    "/Users/xxx/.nvm/versions/node/v10.15.3/lib/node"
]

...

$ pwd
/Users/xxx/Development/nest-test/node_modules
$ ll @app 
total 0
drwxr-xr-x    3 xxx  staff     96 May 30 09:04 .
drwxr-xr-x  608 xxx  staff  19456 May 30 09:04 ..
lrwxr-xr-x    1 xxx  staff     65 May 30 09:04 foo -> ../../../../.nvm/versions/node/v10.15.3/lib/node_modules/@app/foo```

1 Ответ

0 голосов
/ 31 мая 2019

В соответствии с документами путей tsconfig его можно использовать при выполнении встроенных источников с узлом.В комментарии к проблеме, на который вы ссылаетесь, также упоминается выполнение с узлом.

На самом деле проблема возникает при выполнении встроенных файлов с узлом dist / main.js, а не во время процесса сборки с помощью tsc.

Iудалось получить рабочее решение, следуя этим инструкциям из документации по tsconfig-paths. @ bisonfoutu создал репозиторий здесь .

  • Добавьте файл с именем tsconfig-paths-bootstrap.js в корень проекта и вставьте код из документов.в нем.
  • Измените сценарий start:prod на: node -r ./tsconfig-paths-bootstrap.js dist/main.js
  • Теперь вы сможете компилировать и выполнять проект с путями TS.(знайте, что вы не сможете скомпилировать, если в tsconfig.json не указан путь к файлу)
...