对不起。这是我在 StackOverflow 上的第一个问题
我是这样解决的: 由于我的 Next.JS 是 TypeScript 项目 所以,我的项目有 tsconfig.json
// tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["components/*"]
}
}
}
// next.config.js
const path = require('path')
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
}
module.exports = {
...nextConfig,
webpack: (config,
{ buildId, dev, isServer, defaultLoaders, nextRuntime, webpack }) => {
config.resolve.alias = {
...config.resolve.alias,
'@': path.resolve(__dirname),
'@/components': path.resolve(__dirname, 'components'),
}
return config
},
}
import Layout from '@/components/Layout'
要为代码中的组件设置导入别名,您可以修改项目的 tsconfig.json 文件中的“baseUrl”和“paths”配置
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@/*": ["*"]
}
}
}
这很可能是 https://www.npmjs.com/package/module-alias
与NextJs无关。
我的首选配置
{
"compilerOptions": {
"paths": {
"baseUrl": ["."],
"@/*": ["./src/*"],
"@components/*": ["./src/components/*"],
"@utils/*": ["./src/utils/*"],
"@hooks/*": ["./src/hooks/*"],
"@lib/*": ["./src/lib/*"],
// Other alias configurations
}
}
}
现在您可以像这样导入:
import Button from "@components/button" // path ./src/components/button.tsx
import { useHook } from "@hooks/use-hook" // path ./src/hooks/use-hook.ts