【问题标题】:Vue-typescript error with webpack alias, path not found带有 webpack 别名的 Vue-typescript 错误,找不到路径
【发布时间】:2019-06-30 21:19:43
【问题描述】:

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

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

项目文件夹结构:

  • .env.marketplace
  • .env.producer
  • 公开/
  • 源/
    • app_marketplace/
    • app_producer/
    • app_shared/
  • 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 文件并将env 设置为VUE_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')
        }
    }
}

问题是从我的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

我做错了什么?

【问题讨论】:

    标签: typescript vue.js webpack vuejs2


    【解决方案1】:

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

    {
      "paths": {
        "~/*": [
          "src/app_shared/*",
        ],
        "@/*": [
          "src/*"
        ]
      },
      ...
    }
    

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

    【讨论】:

    • 是否有问题:"@/*": [ "src/app_marketplace/*", "src/app_producer/*" ]
    • 除非您在两个目录下都有相同的目录树(例如,src/app_marketplace/foo/foo.tssrc/app_producer/foo/foo.ts,在这种情况下首先找到的路径优先),否则这样做应该没有问题。
    猜你喜欢
    • 2017-09-08
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 2023-03-07
    • 2019-08-13
    • 2020-06-16
    相关资源
    最近更新 更多