我正在使用
ts-morph
生成一些代码,并且我想解析我的依赖项之一中的文件。
我尝试使用
ts.resolveModuleName
但这不会在父目录中搜索:
const x = ts.resolveModuleName(
"@pulumi/aws",
"",
project.compilerOptions.get(),
project.getModuleResolutionHost(),
);
console.log(x);
日志:
{
resolvedModule: undefined,
failedLookupLocations: [
'node_modules/@pulumi/aws/package.json',
'node_modules/@pulumi/aws.ts',
'node_modules/@pulumi/aws.tsx',
'node_modules/@pulumi/aws.d.ts',
'node_modules/@pulumi/aws/index.ts',
'node_modules/@pulumi/aws/index.tsx',
'node_modules/@pulumi/aws/index.d.ts',
'node_modules/@types/pulumi__aws/package.json',
'node_modules/@types/pulumi__aws.d.ts',
'node_modules/@types/pulumi__aws/index.d.ts',
'node_modules/@pulumi/aws/package.json',
'node_modules/@pulumi/aws.js',
'node_modules/@pulumi/aws.jsx',
'node_modules/@pulumi/aws/index.js',
'node_modules/@pulumi/aws/index.jsx'
],
affectingLocations: [
'/Users/jason/src/bottech/pulumix/packages/pulumix-aws/package.json'
],
resolutionDiagnostics: undefined,
node10Result: undefined
}
compilerOptions.moduleResolution
是NodeNext
。
我希望它也能像使用
/Users/jason/src/bottech/pulumix/node_modules
时那样在 tsc
中显示。
我缺少什么让它像正常的分辨率算法一样工作?
如果您为
containingFile
传递正确的路径,它就会起作用。例如:
ts.resolveModuleName(
"@pulumi/aws",
__filename,
project.compilerOptions.get(),
project.getModuleResolutionHost(),
);
您可以通过 a) 启用
traceResolution
选项和 b) 确保主机已定义 trace
方法来查看解决方案:
ts.resolveModuleName(
"@pulumi/aws",
__filename,
{ ...project.compilerOptions.get(), traceResolution: true },
{ ...project.getModuleResolutionHost(), trace: console.trace },
);