"paths" 在我的 vue 应用程序的 tsconfig 中被忽略
"paths" being ignored in tsconfig in my vue application
我已经见过很多次了,但出于某种原因,我的“路径”对象无法正常工作。
原来是这样设置的:
"paths": {
"@/*": ["src/*"]
},
我已经更新为:
"paths": {
"@/*": ["src/*"],
"@graphql/*": ["src/_core/graphql/*"],
"@components/*": ["src/_shared/components/*"],
"@directives": ["src/_shared/directives"],
"@models": ["src/_core/models"],
"@logic/*": ["src/_shared/logic/*"]
},
当我尝试 运行 我的应用程序时,它抱怨说 没有找到依赖项 :
- @components/layout/the-footer/the-footer.component.vue in ./node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--14-2!./node_modules/eslint-loader??ref--13-0!./src/app.component.ts?vue&type=script&lang=ts&
在我的 app.component.ts 文件中我有这个参考:
import TheFooter from "@components/layout/the-footer/the-footer.component.vue";
我的应用程序的结构是这样的:
谁能告诉我为什么我的路径不起作用?
我发现有几个人在使用 vue 时遇到这个问题:
:
我尝试更新我的 vue.config.js 并在其中添加别名以匹配我的 tsconfig,如下所示:
configureWebpack: () => {
if (process.env.NODE_ENV !== "production") return;
return {
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
"@graphql/*": path.resolve(__dirname, "src/_core/graphql/*"),
"@components/*": path.resolve(__dirname, "src/_shared/components/*"),
"@directives": path.resolve(__dirname, "src/_shared/directives"),
"@models": path.resolve(__dirname, "src/_core/models"),
"@logic/*": path.resolve(__dirname, "src/_shared/logic/*"),
},
},
plugins: [
new PrerenderSpaPlugin(
// Absolute path to compiled SPA
path.resolve(__dirname, "dist"),
// List of routes to prerender
["/"]
),
],
};
},
但我仍然得到同样的错误
我实际上设法用插件解决了这个问题:
https://github.com/dividab/tsconfig-paths-webpack-plugin
我这样更新了我的 vue.config.js:
chainWebpack: (config) => {
config.resolve.alias.delete("@");
config.resolve
.plugin("tsconfig-paths")
.use(require("tsconfig-paths-webpack-plugin"));
},
现在一切正常:)
如果您正在使用 vue-cli,它可能更易于使用
我已经见过很多次了,但出于某种原因,我的“路径”对象无法正常工作。 原来是这样设置的:
"paths": {
"@/*": ["src/*"]
},
我已经更新为:
"paths": {
"@/*": ["src/*"],
"@graphql/*": ["src/_core/graphql/*"],
"@components/*": ["src/_shared/components/*"],
"@directives": ["src/_shared/directives"],
"@models": ["src/_core/models"],
"@logic/*": ["src/_shared/logic/*"]
},
当我尝试 运行 我的应用程序时,它抱怨说 没有找到依赖项 :
- @components/layout/the-footer/the-footer.component.vue in ./node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--14-2!./node_modules/eslint-loader??ref--13-0!./src/app.component.ts?vue&type=script&lang=ts&
在我的 app.component.ts 文件中我有这个参考:
import TheFooter from "@components/layout/the-footer/the-footer.component.vue";
我的应用程序的结构是这样的:
谁能告诉我为什么我的路径不起作用?
我发现有几个人在使用 vue 时遇到这个问题:
我尝试更新我的 vue.config.js 并在其中添加别名以匹配我的 tsconfig,如下所示:
configureWebpack: () => {
if (process.env.NODE_ENV !== "production") return;
return {
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
"@graphql/*": path.resolve(__dirname, "src/_core/graphql/*"),
"@components/*": path.resolve(__dirname, "src/_shared/components/*"),
"@directives": path.resolve(__dirname, "src/_shared/directives"),
"@models": path.resolve(__dirname, "src/_core/models"),
"@logic/*": path.resolve(__dirname, "src/_shared/logic/*"),
},
},
plugins: [
new PrerenderSpaPlugin(
// Absolute path to compiled SPA
path.resolve(__dirname, "dist"),
// List of routes to prerender
["/"]
),
],
};
},
但我仍然得到同样的错误
我实际上设法用插件解决了这个问题:
https://github.com/dividab/tsconfig-paths-webpack-plugin
我这样更新了我的 vue.config.js:
chainWebpack: (config) => {
config.resolve.alias.delete("@");
config.resolve
.plugin("tsconfig-paths")
.use(require("tsconfig-paths-webpack-plugin"));
},
现在一切正常:)
如果您正在使用 vue-cli,它可能更易于使用