2017-12-23 16 views
0

私はmocha-webpack v1.0.1、ノードv6.10でユニットテストを行っています。しかし、webpackが@を解析できなかったノードモジュールの1つからエラーが発生しています。これは、別の開発環境で正常に動作する内部ライブラリです。だから、私はなぜあなたがnode_moduleのライブラリが自立していると考えて、自分自身をパースする方法を知っていると思うので、これが起こっているのか混乱しています(別の環境で働くことで検証されます)。私は信じてい@Webpack 2 - node_moduleの解析に関する問題

Error in ./~/abc-components/src/abc-theme/index.scss 

    Module parse failed: /path/to/app/node_modules/abc-components/src/abc-theme/index.scss Unexpected character '@' (1:0) 
    You may need an appropriate loader to handle this file type. 
    | @charset "UTF-8"; 
    | @import "abc-variables"; 
    | @import "alert"; 

は、我々はそのライブラリ内のモジュールのパスを解決するために使用するエイリアスです。私はこのtutorialの後に私のセットアップをモデル化しました。

"unit": "BABEL_ENV=test mocha-webpack --webpack-config build/webpack.test.conf.js --require test/unit/.setup src/**/*.spec.js --recursive --watch" 

build/webpack.test.conf.js私が試したことのいくつかのコメントを含め設定、から:package.jsonから

var path = require('path') 
var webpack = require('webpack') 
var utils = require('./utils') 
var config = require('../config') 
// var nodeExternals = require('webpack-node-externals'); 

function resolve(dir) { 
    return path.join(__dirname, '..', dir) 
} 

module.exports = { 
    entry: { 
    app: './src/main.js' 
    }, 
    resolve: { 
    modules: [path.resolve('./src'), "node_modules"], 
    extensions: ['.js', '.vue', '.json', '.ts'], 
    alias: { 
     'vue$': 'vue/dist/vue.esm.js', 
     '@': resolve('src') 
    } 
    }, 
    // externals: [nodeExternals()], 
    output: { 
    path: config.build.assetsRoot, 
    filename: '[name].js', 
    publicPath: process.env.NODE_ENV === 'production' 
     ? config.build.assetsPublicPath 
     : config.dev.assetsPublicPath 
    }, 
    // plugins: [ 
    // new webpack.optimize.CommonsChunkPlugin({ 
    // name: "vendor", 
    // filename: "vendor.js", 
    // minChunks: function (module) { 
    //  // This prevents stylesheet resources with the .css or .scss extension 
    //  // from being moved from their original chunk to the vendor chunk 
    //  if(module.resource && (/^.*\.(css|scss)$/).test(module.resource)) { 
    //  return false; 
    //  } 
    //  return module.context && module.context.indexOf("node_modules") !== -1; 
    // } 
    // }), 
    // new webpack.DefinePlugin({ 
    //  'process.env': require('../config/test.env') 
    // }) 
    // ], 
    module: { 
    loaders: [ 
     { 
     test: /\.(js|vue)$/, 
     // loader: 'eslint-loader', 
     // enforce: 'pre', 
     include: [resolve('src'), resolve('test'), resolve('node_modules')], 
     /* options: { 
      formatter: require('eslint-friendly-formatter') 
     } */ 
     }, 
     { 
     test: /\.pug$/, 
     loader: 'pug-loader' 
     }, 
     { 
     test: /\.vue$/, 
     loader: 'vue-loader' 
     // options: vueLoaderConfig 
     }, 
     { 
     test: /\.ts$/, 
     loader: "awesome-typescript-loader", 
     include: [resolve('src'), resolve('test')] 
     }, 
     { 
     test: /\.js$/, 
     loader: 'babel-loader', 
     query: { 
      presets: ['es2015'] 
     }, 
     include: [resolve('src'), resolve('test')] 
     // exclude: /node_modules/ 
     }, 
     { 
     test: /\.(mp3|wav)(\?.*)?$/, 
     loader: 'url-loader', 
     options: { 
      limit: 10000, 
      name: utils.assetsPath('audio/[name].[hash:7].[ext]') 
     } 
     }, 
     { 
     test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 
     loader: 'url-loader', 
     options: { 
      limit: 10000, 
      name: utils.assetsPath('img/[name].[hash:7].[ext]') 
     } 
     }, 
     { 
     test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 
     loader: 'url-loader', 
     options: { 
      limit: 10000, 
      name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 
     } 
     } 
    ] 
    }, 
    resolveLoader: { 
    alias: { 
     // necessary to to make lang="scss" work in test when using vue-loader's ?inject option 
     // see discussion at https://github.com/vuejs/vue-loader/issues/724 
     'scss-loader': 'sass-loader' 
    } 
    } 
} 

答えて

0

はローダーに次の設定を含めます。

module: { 
loaders: [ 
    { 
     test: /\.(scss|sass)$/i, 
     include: [ 
      path.resolve(__dirname, 'node_modules'), 
      path.resolve(__dirname, 'path/to/imported/file/dir'), <== This solved the issue 
     ], 
     loaders: ["css", "sass"] 
    }, 
] 

}、