Javascript 如何从模块中获取版本

Javascript 如何从模块中获取版本,javascript,typescript,nestjs,Javascript,Typescript,Nestjs,我有2个repo,我想在repoA上获得正确的package.json版本。“我的代码”当前会将repoB上的版本返回给我。问题是我正在查看路径/package.json。如何获得正确的版本 在回购协议A中: @Controller('version') export class VersionController { @Post() @HttpCode(200) @ApiResponse({ status: 200, description: 'Success',

我有2个repo,我想在repo
A
上获得正确的
package.json
版本。“我的代码”当前会将repo
B
上的版本返回给我。问题是我正在查看路径
/package.json
。如何获得正确的版本

在回购协议A中:

@Controller('version')
export class VersionController {
  @Post()
  @HttpCode(200)
  @ApiResponse({
    status: 200,
    description: 'Success',
    type: VersionDto,
  })
  async versionHandler(): Promise<VersionDto> {
    const { version } = require('./package.json');

    try {
      return {
        version,
      };
    } catch (err) {
      throw new InternalServerErrorException(err);
    }
  }
我调用版本控制器获取package.json内的版本,但不幸的是,这给了我repo
A
的版本,而我想要的是repo
B
的版本。这怎么可能呢

目录树:

回购协议A:

src/
  version/
     version.dto.ts
     version.controller.ts
     version.module.ts
回购协议b:

app.module.ts
src/
我对动态模块的尝试。这不起作用:

@Module({})
export class VersionModule {
  static register(options): DynamicModule {
    return {
      module: VersionModule,

      controllers: [VersionController],
      providers: [
        {
          provide: VersionController,
          useValue: options,
        },
      ],
    };
  }
}

基本上你有这样的东西:

B
├── node_modules
│   ├── ...
│   └── A
│       ├── package.json
│       └── code_that_read_package_json.js
└── package.json

这就是为什么当您通过
require('./package.json')
加载
package.json
时,由于相对路径(和模块解析规则),您总是会得到模块
A
package.json

当然,
require('../../package.json')
会解决这个问题,但我认为这不是正确的解决方案

您可以在注册
VersionModule
时,通过将其转换为一个而不是一个,来传递该值,而不是读取整个
package.json
以获取
version
字段


也许会对你有所帮助。

我不确定全部原因是什么,但你可能最终会做类似的事情

const packageJSON=(等待readFile(join(process.cwd(),'package.json')).toString();
const version=JSON.pasre(packageJSON).version;

其中
readFile
promises.readFile
from
fs
join
是来自
path
。应该是所有内置功能,并且应该根据代码的运行位置读取正确的package.json。否则,您可以尝试
require.resolve(package.json)
更具动态性,将繁重的逻辑留给
require
。只需记住
如何要求
调用
包。json
可以修改outdir,因为必须通过typescript准备就绪。

告诉我们您的目录树如何更新post@MicaelLevithe
包。json
文件与
src
处于同一级别?它们是,yes@Michaellevit应用程序B将应用程序A作为其依赖项?请举例说明如何使用动态模块传递此值。我已经更新了我的帖子,告诉大家我是如何尝试做一个动态模块的,但是这不起作用。
B
├── node_modules
│   ├── ...
│   └── A
│       ├── package.json
│       └── code_that_read_package_json.js
└── package.json