next.js中设置别名@

本文档介绍了在Next.js项目中如何设置别名@,包括安装相关插件,修改.babelrc,创建并配置tsconfig-base.json以及tsconfig.json的继承设置。通过这些步骤,可以简化项目路径引用,提高开发效率。


前言

Next.js中设置别名@

项目目录结构
项目目录结构

一、安装插件

使用babel-plugin-module-resolver
# 安装插件
yarn add -D babel-plugin-module-resolver

# 安装插件
npm install --save-dev babel-plugin-module-resolver

二、使用步骤

1.修改.babelrc

代码如下(示例):

// .babelrc
{
  "presets": ["next/babel"],
  "plugins": [
    [
      "import",
      {
        "libraryName": "antd-mobile",
        "libraryDirectory": "es/components",
        "style": false
      }
    ],
    [
      "module-resolver",
      {
        "alias": {
          "@/src": "./src",
          "@/public": "./public"
        }
      }
    ]
  ]
}

2.新建tsconfig-base.json

代码如下(示例):

// tsconfig-base.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@*": ["src/*"]
    }
  }
}

2.tsconfig.json继承tsconfig-base.json

代码如下(示例):

// tsconfig.json
{
  "extends": "./tsconfig-base.json",
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules"]
}

三、效果展示

设置别名前
设置别名后


总结

Next.js中设置别名@

组件套用导致的错误:permission.js:32 [Vue warn]: Unknown custom element: <ContactsDialog> - did you register the component correctly? For recursive components, make sure to provide the "name" option. found in ---> <CustomerAdd> at src/components/Dialog_Sales_Addedit/CustomerAdd.vue <ContactsDialog> at src/components/Dialogs_Sales_Choose/CustomerDialog.vue <ContactAdd> at src/components/Dialog_Sales_Addedit/ContactAdd.vue <ContactsDialog> at src/components/Dialogs_Sales_Choose/ContactsDialog.vue <AuthorizationManagement> at src/views/DepartmentSales/serviceCenter/authorizationManagement.vue <AppMain> at src/layout/components/AppMain.vue <Layout> at src/layout/index.vue <App> at src/App.vue <Root> warn @ vue.runtime.esm.js:620 createElm @ vue.runtime.esm.js:5922 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 createChildren @ vue.runtime.esm.js:6037 createElm @ vue.runtime.esm.js:5938 patch @ vue.runtime.esm.js:6461 Vue._update @ vue.runtime.esm.js:3933 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 Watcher @ vue.runtime.esm.js:4456 mountComponent @ vue.runtime.esm.js:4061 Vue.$mount @ vue.runtime.esm.js:8399 init @ vue.runtime.esm.js:3115 createComponent @ vue.runtime.esm.js:5962 createElm @ vue.runtime.esm.js:5909 updateChildren @ vue.runtime.esm.js:6200 patchVnode @ vue.runtime.esm.js:6303 patch @ vue.runtime.esm.js:6466 Vue._update @ vue.runtime.esm.js:3936 updateComponent @ vue.runtime.esm.js:4054 get @ vue.runtime.esm.js:4467 run @ vue.runtime.esm.js:4542 flushSchedulerQueue @ vue.runtime.esm.js:4298 eval @ vue.runtime.esm.js:1979 flushCallbacks @ vue.runtime.esm.js:1905 Promise.then timerFunc @ vue.runtime.esm.js:1932 nextTick @ vue.runtime.esm.js:1989 queueWatcher @ vue.runtime.esm.js:4390 update @ vue.runtime.esm.js:4532 notify @ vue.runtime.esm.js:731 reactiveSetter @ vue.runtime.esm.js:1056 eval @ vue-router.esm.js:2504 eval @ vue-router.esm.js:2503 updateRoute @ vue-router.esm.js:1990 eval @ vue-router.esm.js:1868 eval @ vue-router.esm.js:1977 step @ vue-router.esm.js:1707 step @ vue-router.esm.js:1714 step @ vue-router.esm.js:1714 runQueue @ vue-router.esm.js:1718 eval @ vue-router.esm.js:1972 step @ vue-router.esm.js:1707 eval @ vue-router.esm.js:1711 eval @ vue-router.esm.js:1957 eval @ vue-router.esm.js:1750 eval @ vue-router.esm.js:1826 Promise.then eval @ vue-router.esm.js:1773 eval @ vue-router.esm.js:1794 eval @ vue-router.esm.js:1794 flatMapComponents @ vue-router.esm.js:1793 eval @ vue-router.esm.js:1729 iterator @ vue-router.esm.js:1936 step @ vue-router.esm.js:1710 step @ vue-router.esm.js:1714 step @ vue-router.esm.js:1714 eval @ vue-router.esm.js:1711 eval @ vue-router.esm.js:1957 eval @ permission.js:32 eval @ regenerator.js:70 eval @ regeneratorDefine.js:13 asyncGeneratorStep @ asyncToGenerator.js:8 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 eval @ permission.js:69 iterator @ vue-router.esm.js:1936 step @ vue-router.esm.js:1710 runQueue @ vue-router.esm.js:1718 confirmTransition @ vue-router.esm.js:1965 transitionTo @ vue-router.esm.js:1867 replace @ vue-router.esm.js:2280 eval @ vue-router.esm.js:1951 eval @ permission.js:47 eval @ regenerator.js:70 eval @ regeneratorDefine.js:13 asyncGeneratorStep @ asyncToGenerator.js:8 _next @ asyncToGenerator.js:22 Promise.then asyncGeneratorStep @ asyncToGenerator.js:13 _next @ asyncToGenerator.js:22 Promise.then asyncGeneratorStep @ asyncToGenerator.js:13 _next @ asyncToGenerator.js:22 eval @ asyncToGenerator.js:27 eval @ asyncToGenerator.js:19 eval @ permission.js:69 iterator @ vue-router.esm.js:1936 step @ vue-router.esm.js:1710 runQueue @ vue-router.esm.js:1718 confirmTransition @ vue-router.esm.js:1965 transitionTo @ vue-router.esm.js:1867 init @ vue-router.esm.js:2495 beforeCreate @ vue-router.esm.js:540 invokeWithErrorHandling @ vue.runtime.esm.js:1853 callHook @ vue.runtime.esm.js:4207 Vue._init @ vue.runtime.esm.js:4988 Vue @ vue.runtime.esm.js:5069 eval @ main.js:56 ./src/main.js @ app.js:7398 __webpack_require__ @ app.js:849 fn @ app.js:151 1 @ app.js:9266 __webpack_require__ @ app.js:849 checkDeferredModules @ app.js:46 (anonymous) @ app.js:925 (anonymous) @ app.js:928 permission.js:32 [Vue warn]: Unknown custom element: <ContactsDialog> - did you register the component correctly? For recursive components, make sure to provide the "name" option. found in ---> <CustomerAdd> at src/components/Dialog_Sales_Addedit/CustomerAdd.vue <ContactsDialog> at src/components/Dialogs_Sales_Choose/CustomerDialog.vue <AuthorizationManagement> at src/views/DepartmentSales/serviceCenter/authorizationManagement.vue <AppMain> at src/layout/components/AppMain.vue <Layout> at src/layout/index.vue <App> at src/App.vue <Root>
09-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值