无法在Storybook中使用@解析Vue组件

时间:2019-09-18 13:55:04

标签: vue.js storybook

我已经建立了一个新的vue项目,并向该项目添加了故事书。当我有使用@/components路径的组件时,它无法正确运行。

Can't resolve '@/components/EntityGrid/EntityGrid.Component.vue'

我尝试了多个webpack.config.js,但没有任何运气。最简单的webpack.config.js可以解决此问题

这是在没有webpack.config.js的默认配置中发生的。

2 个答案:

答案 0 :(得分:1)

我不知道您问题的原因是什么,但这是我的工作vue.config.js

const path = require('path')

module.exports = {
    chainWebpack: config => {
        config.module
            .rule("i18n")
            .resourceQuery(/blockType=i18n/)
            .type('javascript/auto')
            .use("i18n")
            .loader("@kazupon/vue-i18n-loader")
            .end();
    },
    configureWebpack: {
        resolve: {
            extensions: ['.js', '.vue', '.json'],
            alias: {
                '@': path.join(__dirname, '/src')
            }
        },
        module: {
            rules: [
                {
                    test: /\.(graphql|gql)$/,
                    exclude: /node_modules/,
                    loader: 'graphql-tag/loader',
                },
            ]
        },
    },
    css: {
        loaderOptions: {
            sass: {
                data: `@import "@/assets/sass/_variables.scss"; @import "@/assets/sass/_mixins.scss";`,
            }
        }
    }
}

只需忽略您不需要的所有内容

答案 1 :(得分:0)

我设法通过在.storybook/main.js

中添加以下内容来解决此问题
const path = require("path");

module.exports = {
  stories: ['./../src/**/*.stories.(js|jsx|ts|tsx|mdx)'],
  ...
  webpackFinal: async (config) => {
    config.resolve.alias = {
      ...config.resolve.alias,
      "@": path.resolve(__dirname, "../src/"),
    };
    // keep this if you're doing typescript
    // config.resolve.extensions.push(".ts", ".tsx");
    return config;
  },
}

以下是一些有用的链接,可帮助提供进一步的背景信息: