Import 打字脚本可以';无法解析导入中的非相对路径
我有这样的项目结构Import 打字脚本可以';无法解析导入中的非相对路径,import,typescript,webpack,Import,Typescript,Webpack,我有这样的项目结构 |--src |--app.component |--index.ts |--home.component |--index.ts |--tsconfig.json |--webpack.config.js 我试着在app.component-index.ts中做下面的事情 import { HomeComponent } from 'components/home.comp
|--src
|--app.component
|--index.ts
|--home.component
|--index.ts
|--tsconfig.json
|--webpack.config.js
我试着在app.component-index.ts中做下面的事情
import { HomeComponent } from 'components/home.component'
Typescript找不到此模块并引发
error TS2307: Cannot find module 'home.component'
Typescript文档说下一步:
对moduleB的非相对导入,例如从“moduleB”导入{b},
在源文件/root/src/folder/a.ts中,将导致尝试
以下位置用于定位“moduleB”:
所以对于我的情况,我想会是这样
/src/components/app.component/components/home.component
/src/components/components/home.component
/src/components/home.component
提前谢谢。
另外,在我的webpack.config中,我已经将root.resolve设置为src,并且一切都是正确的。Typescript loader将错误打印到终端,但所有内容都捆绑在一起并正常工作,因此我可以猜测其中的“为什么”部分,但我对Typescript比较陌生。不过我已经做到了,所以我会尽我所能尝试根据这个解决方案来解释
如果满足以下条件,则基于TypeScript文档的预期基本正确:
'components/home.component'
被视为“非相对进口”。我相当确定(基于我的解决方案),TypeScript将其视为tsconfig.json中“compilerOptions.baseUrl”字段的绝对路径
对我有效的是这样设置:
{
"compilerOptions": {
"baseUrl": ".",
// Other options
}
}
这本质上告诉TypeScript尝试找到类似
'components/home.component'
通过在tsconfig.json文件所在的目录中查找名为“components”的目录,然后在其中查找名为“home.component”的文件/目录
因此,如果您的结构看起来像:
|--src
|--app.component
|--index.ts
|--home.component
|--index.ts
|--tsconfig.json
|--webpack.config.js
然后将baseUrl设置为“.”,您可能需要将导入的格式设置为
import { HomeComponent } from 'src/home.component'
components/home.component
看起来不像非相对导入。您告诉它获取home.component
,但那是一个目录,不是一个模块。@Ozrix-hmm。。但如果我把它改成简单的“home.component”,它对我就不起作用了。这很奇怪,但是components/home。几天前当src
文件夹被命名为client
时,component
工作正常,您不需要在路径前面加上“/”前缀?例如,从“./components/home.component”导入{HomeComponent}?@mattsarles它不会解决问题。如果我这样做,路径就会变得相对。我可以用亲属路径来做,但我想知道为什么它不起作用
import { HomeComponent } from 'src/home.component'