Javascript 如何从模块中获取版本
我有2个repo,我想在repoJavascript 如何从模块中获取版本,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',
A
上获得正确的package.json
版本。“我的代码”当前会将repoB
上的版本返回给我。问题是我正在查看路径/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内的版本,但不幸的是,这给了我repoA
的版本,而我想要的是repoB
的版本。这怎么可能呢
目录树:
回购协议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
fromfs
和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