首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析mocha-webpack中的laravel vue单文件组件别名

如何解析mocha-webpack中的laravel vue单文件组件别名
EN

Stack Overflow用户
提问于 2019-11-08 16:54:44
回答 2查看 879关注 0票数 0

我使用vuejs在Laravel5.7建立一个SPA。我用mocha-webpack和vue-test-utils编写了一些vue组件测试。

测试似乎无法将样式表导入到组件中。例如:我有一个ExampleComponent.vue,它包括以下内容:

代码语言:javascript
复制
</script>

<style lang="scss" scoped>

@import '@/_variables.scss';

.subpanel-control > ul > li {
    background-color: lighten($body-bg, 50);
    margin-left: 10px;
    height: 25px;
    width: 25px;
    line-height: 25px;
    color: $body-bg;
}

在运行npm run test时,我得到以下错误:

代码语言:javascript
复制
Error in ./resources/assets/js/components/Panel.vue?vue&type=style&index=0&id=21f01f46&lang=scss&scoped=true&

  Module build failed (from ./node_modules/sass-loader/dist/cjs.js):

  @import '@/variables';
         ^
        Can't find stylesheet to import.
     ╷
  98 │ @import '@/variables';
     │         ^^^^^^^^^^^^^
     ╵
    stdin 98:9  root stylesheet
        in C:\Users\jjackson\Documents\projects\wave\resources\assets\js\components\Panel.vue (line 98, column 9)

我不明白为什么它不理解别名@。这是我的webpack.mix.js:

代码语言:javascript
复制
let mix = require('laravel-mix');
const path = require('path');

mix.js('resources/assets/js/app.js', 'public/js')
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/sass/nifty.scss', 'public/css', {
        implementation: require('node-sass')
    })
    .sass('resources/assets/sass/themes/type-b/theme-ocean.scss', 'public/css')
    .less('resources/assets/less/bootstrap-4-utilities.less', 'public/css')
    .webpackConfig({
        resolve: {
            alias: {
                '@': path.resolve('resources/assets/sass'),
                '~': path.resolve('resources/assets/js')
            }
        }
    })
    .sourceMaps();

if (mix.inProduction()) {
    mix.version();
}

如能提供任何帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-02 09:19:03

结果发现这是一个码头问题。试图在docker环境之外运行npm run dev,这导致了此错误。当我在容器中运行所有npm命令时,一切正常。

票数 0
EN

Stack Overflow用户

发布于 2019-12-31 08:47:30

当我挣扎于同样的问题时,我登上了这个页面-- https://github.com/vuejs/vue-cli/issues/4053和robbishop的一条评论,让我找到了我的解决方案。使用上述方法,我设法在webpack.mix.js中找到了一种似乎有效的配置:

null-loader)

  • Add
  1. 第一次安装null-
  2. (npm i -D -D)规则中的一行:

代码语言:javascript
复制
{ test: /\.scss$/, use: [{ loader: 'null-loader' }] }

我的webpack.mix.js看起来是这样的:

代码语言:javascript
复制
const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
    .webpackConfig({
        module: {
            rules: [
                { test: /\.scss$/, use: [{ loader: 'null-loader' }] }
            ]
        },
        resolve: {
            alias: {
                '@': path.resolve('somepath/sass')
            }
        }
    })
    .sass('some/path/app.scss', 'some/path/css');

我的单元测试现在是在组件中导入scss时执行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58770805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档