nestjsx / nestjs-config

Config module for nestjs using dotenv :key:
MIT License
698 stars 44 forks source link

Can't work with `monorepo` mode #180

Closed wxs77577 closed 4 years ago

wxs77577 commented 4 years ago

It does not work after I move to monorepo mode: https://docs.nestjs.com/cli/monorepo

Version: typescript 3.6.4
Time: 96ms
Hash: 636664306cf42961350d
Version: webpack 4.41.0
Time: 104ms
Built at: 2019-10-18 23:57:22
Entrypoint main = apps/admin/main.js
[Nest] 46523   - 2019-10-18 23:57:22   [NestFactory] Starting Nest application...
[Nest] 46523   - 2019-10-18 23:57:22   [InstanceLoader] DbModule dependencies initialized +14ms
[Nest] 46523   - 2019-10-18 23:57:22   [InstanceLoader] AppModule dependencies initialized +1ms
/Users/johnny/projects/test/topfullstack-test/server/libs/db/src/db.config.ts:1
export default {
^^^^^^

SyntaxError: Unexpected token export
    at Module._compile (internal/modules/cjs/loader.js:720:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at /Users/johnny/projects/test/topfullstack-test/server/node_modules/nestjs-config/dist/module/config.service.js:224:28
    at Array.reduce (<anonymous>)
    at Function.configGraph (/Users/johnny/projects/test/topfullstack-test/server/node_modules/nestjs-config/dist/module/config.service.js:223:28)
    at /Users/johnny/projects/test/topfullstack-test/server/node_modules/nestjs-config/dist/module/config.service.js:198:42
michaelyali commented 4 years ago

It's not about nestjs-config for sure. Your entry point is apps/admin/main.js and the problem is here ...libs/db/src/db.config.ts So are you sure you compile libs/db/src folder? I pretty sure you don't

wxs77577 commented 4 years ago

@zMotivat0r Thanks for your reply, but how could I fix it in monorepo mode?

wxs77577 commented 4 years ago

/config/app.ts

export default {
  name: 'APP',
  secret: process.env.SECRET
}

It throws an error:

C:\work\code\nest-test\config\app.ts:1
export default {
^^^^^^

SyntaxError: Unexpected token export
...

If I move app.ts to app.js with module.exports it works.

module.exports = {
  name: 'APP',
  secret: process.env.SECRET
}

How could I use typescript in my configuration files?

bashleigh commented 4 years ago

What's your config glob? Looks like it's using ts files in prod.

wxs77577 commented 4 years ago
ConfigModule.load(path.resolve('config', '**/!(*.d).{ts,js}'))

@bashleigh

bashleigh commented 4 years ago

Your path includes every file from where the process is run from Which is not what you want to do because this will include any file ending with .ts or .js. It's best to use a relative dir using ___dirname to only pick the files relative to where your main file is being called. I would use this instead ConfigModule.load(path.resolve(__dirname, 'config', '**/!(*.d).{ts,js}'))