Skip to content

Commit b36addd

Browse files
committed
fix(compiler-sfc): handle ts files with relative imports with .js extension
close #8339
1 parent f69dbab commit b36addd

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Diff for: packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts

+20
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,26 @@ describe('resolveType', () => {
592592
expect(deps && [...deps]).toStrictEqual(Object.keys(files))
593593
})
594594

595+
// #8339
596+
test('relative, .js import', () => {
597+
const files = {
598+
'/foo.d.ts':
599+
'import { PP } from "./bar.js"; export type P = { foo: PP }',
600+
'/bar.d.ts': 'export type PP = "foo" | "bar"'
601+
}
602+
const { props, deps } = resolve(
603+
`
604+
import { P } from './foo'
605+
defineProps<P>()
606+
`,
607+
files
608+
)
609+
expect(props).toStrictEqual({
610+
foo: ['String']
611+
})
612+
expect(deps && [...deps]).toStrictEqual(Object.keys(files))
613+
})
614+
595615
test('ts module resolve', () => {
596616
const files = {
597617
'/node_modules/foo/package.json': JSON.stringify({

Diff for: packages/compiler-sfc/src/script/resolveType.ts

+2
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,8 @@ function importSourceToScope(
785785
}
786786

787787
function resolveExt(filename: string, fs: FS) {
788+
// #8339 ts may import .js but we should resolve to corresponding ts or d.ts
789+
filename = filename.replace(/\.js$/, '')
788790
const tryResolve = (filename: string) => {
789791
if (fs.fileExists(filename)) return filename
790792
}

0 commit comments

Comments
 (0)