找不到模块,webpack 别名与 typescript React

2024-01-01

我正在尝试在 webpack 中实现一些别名。我想要做的是,不要使用它从组件文件夹导入 App.js 上的组件。

./components/layout/Header/Header

我要这个:

@components/layout/Header/Header

也就是说,为了避免将来创建嵌套文件夹时出现问题。我所做的就是在webpack.config.js

module.exports = {
    context: __dirname,
    entry: './src/index.js',
    output: {
        path: path.resolve( __dirname, 'dist' ),
        filename: 'main.js',
    },
    resolve: {
        extensions: ['.js', '.ts', '.jsx', '.tsx'],
        alias: {
          src: path.resolve(__dirname, 'src'),
          assets: path.resolve(__dirname, 'src/assets'),
          components: path.resolve(__dirname, 'src/components'),
        }
    }
    .
    .
    .
};

而这在tsconfig.json file:

{
  "compilerOptions": {
    "jsx": "react-jsx",
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "baseUrl": ".",
    "paths": {
      "@": ["./src/*"],
      "@assets": ["./src/assets/*"],
      "@components": ["./src/components/*"]
    },
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
  },
  "include": [
    "src"
  ]
}

当我运行“npm run start”(即“react-scripts start”)时,出现以下错误:

./src/App.js
Module not found: Can't resolve '@components/layout/Header/Header' in 'C:\Users\Angel\Documents\React\thermometer\src' 

另外,我注意到当我运行“npm run start”时,我在 tsconfig.json 文件上创建的对象“路径”,被删除并且文件重置。我是从零开始创建 React 项目的新人。提前致谢!


查看文档Webpack https://webpack.js.org/configuration/resolve/,它没有提到自动在别名前面添加@。由于那里没有指定,Webpack(因此react-scripts start)不知道什么@components指着。

我其实不知道Webpack是否支持以以下开头的别名@(例如后缀$对于 Webpack 有特定的含义,并且@通常适用于作用域包),但如果确实如此,您将不得不更改您的resolve.alias包括@.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找不到模块,webpack 别名与 typescript React 的相关文章

随机推荐