【发布时间】:2020-08-23 09:22:13
【问题描述】:
我有一堆像import Navi from 'components/Navi'这样的导入
这些在components/Navi 部分下方有一个红色错误行,直到我将其添加到我的tsconfig.json
"baseUrl": "./",
"paths": {
"components/*": ["src/components/*"],
"layouts/*": ["src/layouts/*"],
"pages/*": ["src/pages/*"],
"templates/*": ["src/templates/*"],
"scss/*": ["src/scss/*"],
"types": ["src/types"]
}
此时错误消失。当我尝试通过运行 gatsby develop 构建我的开发包时,一切看起来都很好,直到出现 ⠹ Building development bundle
紧随其后的是很多声明,例如Can't resolve 'components/Navi' in '~/src/components'
只有当我指定像import Navi from '../Navi' 这样的相对路径时,这些错误才会消失
作为旁注,我也不能用结构做import {MyType} from 'types'
src
-> types
-> index.ts
它在 'types' 字下出现了一个错误,其中指出 Cannot find module 'types'.ts(2307) 并且我必须将导入更改为 import {Issue} from 'types/index'
我已经尝试运行 gatsby clean 并删除 node_modules
【问题讨论】:
-
TypeScript 的
paths选项用于通知 TypeChecker 加载器或捆绑器将通过指定的映射使 模块可用,它不会使这些文件可用。换句话说,它用于指定其他工具的行为。 -
那么我如何使这些文件可用
-
取决于工具,我认为 gatsby 在后台使用 Webpack。如果是这样,您需要配置 webpack 以使用类似的规则解析模块。请参阅 gatsbyjs.org/docs/add-custom-webpack-config 和 webpack.js.org/configuration/resolve。通常,您会先配置 Webpack 或任何工具,然后设置路径以匹配
标签: reactjs typescript webpack visual-studio-code gatsby