带有 webpack 别名的 Vue-typescript 错误,找不到路径

Gia*_*omo 4 typescript webpack vue.js vuejs2

我在使用打字稿的 vue 项目上配置 webpack 别名时遇到问题。如果我使用普通的 javascript,则不会遇到同样的问题,因此我很困惑

该项目分为 2 个,“app_marketplace”、“app_producer”(类似于管理员),我还有一个用于共享组件和实用程序的第三个文件夹。

项目文件夹结构:

  • .env.marketplace
  • .env.生产者
  • 民众/
  • 来源/
    • 应用市场/
    • app_producer/
    • 应用共享/
  • vue.config.js
  • tslint 文件、babel、package.json 等。

我将 2 应用程序与package.json.

例如,"serve:marketplace": "vue-cli-service serve --mode marketplace src/app_marketplace/main.ts"调用我的.env.marketplace文件并将其设置envVUE_APP_MARKETPLACE=true

现在,vue.config.js我正在使用 env 变量来设置别名。

configureWebpack: {
    resolve: {
        alias: {
            '~': path.resolve(__dirname, 'src/app_shared'),
            '@': path.resolve(__dirname, process.env.VUE_APP_MARKETPLACE ? 'src/app_marketplace' : 'src/app_producer')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是很多导入不起作用或给我错误,从我的main.ts内部开始app_marketplace。我无法解释的另一件事是为什么其中一些有效而一些无效。

import App from './App.vue'
import router from '~/router' // ERROR
import store from '@/store' // ERROR
import '@/plugins'
import '~/directives'
import { DEBUG } from '~/const/debug' // ERROR
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ton*_*y19 10

tsconfig.json应该有一个paths与您的 Webpack 路径别名匹配的配置:

{
  "paths": {
    "~/*": [
      "src/app_shared/*",
    ],
    "@/*": [
      "src/*"
    ]
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

由于文件是 JSON,您将无法在文件中设置条件路径别名。