2016-08-30 2 views
1

내 webpack 설정은 MacOS에서 실행할 수 있지만 Windows에서는 오류가 표시됩니다.Windows에서 웹팩 구성을 사용하지 않는 이유는 무엇입니까?

webpack.config.js

var path = require("path"); 
var webpack = require("webpack"); 
var FileSystem = require("fs"); 
var argv = require('yargs').argv; 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 

module.exports = { 
    devtool: 'cheap-module-source-map', 
    entry: { 
     main: ['webpack/hot/dev-server','webpack-dev-server/client?http://localhost:8090',path.resolve(__dirname, 'app','index.jsx')], 
     vendor:['react', 'redux', 'amazeui-react','react-redux' ,'react-router'] 
    }, 
    output: { 
     path: path.resolve(__dirname, 'dist','app'), 
     publicPath: '/dist/app/', 
     filename: 'bundle.[hash].js', 
     chunkFilename: '[id].[hash].chunk.js', 
    }, 
    plugins: [ 
     new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'), 
     new ExtractTextPlugin('[name]-[chunkhash].css', {allChunks: true}), 
     new webpack.DefinePlugin({ 
      'process.env': { 
       'NODE_ENV': JSON.stringify('dev') 
      } 
     }), 
     new webpack.DefinePlugin({ 
      'process.env.db_env': JSON.stringify(argv['db_env'] ? argv['db_env'] + '' : 'dev'), 
     }), 
     function() { 
      this.plugin("done", function(statsData) { 
       var stats = statsData.toJson(); 
       var bundlejs,maincss; 
       var mains = stats.assetsByChunkName.main; 
       console.log(mains); 
       for (var i = 0; i < mains.length; i++) { 
        if (/^(bundle).+(js)$/.test(mains[i])) { 
        bundlejs = mains[i] 
        } 
        if (/^(main).+(css)$/.test(mains[i])) { 
        maincss = mains[i] 
        } 
       } 
       if (!stats.errors.length) { 
        var htmlFileName = "index.html"; 
        var html = FileSystem.readFileSync(path.join('./resources/temp', htmlFileName), "utf8"); 
        var htmlOutput = html.replace('bundle.js', bundlejs).replace('main.css', maincss); 
        FileSystem.writeFileSync(path.join('./', htmlFileName), htmlOutput); 
       } 
      }); 
     } 
    ], 
    module: { 
     loaders: [ 
      { 
       test: /\.css$/, 
       loader: "style!css" 
      }, 
      { 
       test: /\.scss$/, 
       loader: ExtractTextPlugin.extract('style','css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!sass?outputStyle=expanded&sourceMap') 
      }, 
      { 
       test: /\.jsx?$/, 
       exclude: /(node_modules|bower_components)/, 
       loader: 'babel', // 'babel-loader' is also a legal name to reference 
       query: { 
        plugins: ['transform-runtime', 'add-module-exports', "transform-decorators-legacy"], 
        presets: ['react', 'es2015', 'stage-0'] 
       } 
      }, 
      { 
       test: /\.js$/, 
       loaders: [ 'babel' ], 
       exclude: /node_modules/, 
       include: __dirname 
      }, 
      { test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=8192' } 
     ] 
    }, 
    externals: { 
     BMap:'BMap', 
     BMapLib:'BMapLib' 
    }, 
    resolve: { 
     root:path.resolve(__dirname), 
     modulesDirectories: [ 
      'app', 
      'node_modules' 
     ], 
     extensions: ['', '.js', '.jsx','.scss','.css'] 
    }, 
    resolveLoader: { 
     root:path.resolve(__dirname,"node_modules"), 
    }, 
    devServer: { 
     port: 8090, 
     hot: true, 
     host:"0.0.0.0", 
     historyApiFallback: { 
      index: 'index.html' 
     } 
    } 

}; 

내 디렉토리 구조는 이것이다 :

+src 
    +app 
    +node_modules 
    +webpack.config.js 

및 모든 맥 OS에서 잘 작동하지만 윈도우에서 실행하면, 나는 오류 얻을 :

Module not found: Error: Cannot resolve module 'css' in somefile. 

다음과 같은 파일 :

const style = require('./BuildingDetailContainer.scss'); 

그리고 내가 CSS 로더 말대꾸 로더 스타일 로더

를 설치했는지 확신이 내 package.json, 나는 그것이 내가 추가하지 않기 때문에이 file.Maybe에 의한 것으로 의심되는 내 종속성에 대한 로더.

{ 
    "name": "souban-website", 
    "version": "1.0.0", 
    "description": "souban website", 
    "author": "souban team", 
    "license": "UNLICENSED", 
    "private": true, 
    "engines": { 
    "node": ">=5.0.0", 
    "npm": "^3.0.0" 
    }, 
    "scripts": { 
    "clean": "rm -rf dist", 
    "start": "npm run webpack-dev", 
    "deploy": "npm run test && npm run clean && npm run compile", 
    "webpack": "rm -rf dist && NODE_ENV=production webpack --display-error-details --colors --progress -p --config webpack.prod.config.js", 
    "webpack-dev": "webpack-dev-server --progress --colors --hot --inline", 
    "webpack-release": "rm -rf dist && NODE_ENV=production webpack --display-error-details --colors --progress -p --config webpack.rele.config.js --db_env production", 
    "webpack-dev-release": "rm -rf dist && NODE_ENV=production webpack --display-error-details --colors --progress -p --config webpack.rele.config.js --db_env dev" 
    }, 
    "dependencies": { 
    "amazeui-react": "^1.0.1", 
    "babel-runtime": "^6.6.1", 
    "color": "^0.11.3", 
    "colormin": "^1.1.2", 
    "css-loader": "^0.24.0", 
    "extract-text-webpack-plugin": "^1.0.1", 
    "moment": "^2.12.0", 
    "node-sass": "^3.8.0", 
    "postcss-colormin": "^2.2.0", 
    "react": "^0.14.7", 
    "react-count-to": "^0.4.0", 
    "react-dom": "^0.14.6", 
    "react-motion": "^0.4.2", 
    "react-redux": "^4.0.6", 
    "react-router": "^2.4.0", 
    "redux": "^3.0.6", 
    "sass-loader": "^4.0.0", 
    "style-loader": "^0.13.1", 
    "webpack": "^1.12.12" 
    }, 
    "devDependencies": { 
    "autobind-decorator": "^1.3.3", 
    "babel-core": "^6.4.5", 
    "babel-loader": "^6.2.1", 
    "babel-plugin-add-module-exports": "^0.1.4", 
    "babel-plugin-react-transform": "^2.0.0", 
    "babel-plugin-transform-decorators-legacy": "^1.3.4", 
    "babel-plugin-transform-runtime": "^6.6.0", 
    "babel-polyfill": "^6.3.14", 
    "babel-preset-es2015": "^6.3.13", 
    "babel-preset-react": "^6.3.13", 
    "babel-preset-stage-0": "^6.5.0", 
    "css-loader": "^0.23.1", 
    "file-loader": "^0.8.5", 
    "isomorphic-fetch": "^2.2.1", 
    "jsx-loader": "^0.13.2", 
    "lodash": "^4.3.0", 
    "node-sass": "^3.6.0", 
    "radium": "^0.16.6", 
    "react-addons-css-transition-group": "^0.14.6", 
    "react-cookie": "^0.4.3", 
    "react-dom": "^0.14.5", 
    "react-hot-loader": "^1.3.0", 
    "react-modal": "^0.6.1", 
    "react-motion": "^0.4.1", 
    "redux-logger": "^2.3.1", 
    "redux-persist": "^1.5.5", 
    "redux-persist-crosstab": "^1.0.1", 
    "redux-thunk": "^1.0.3", 
    "sass-loader": "^3.2.0", 
    "scroll-behavior": "^0.3.0", 
    "style-loader": "^0.13.0", 
    "url-loader": "^0.5.7", 
    "webpack": "^1.12.9", 
    "webpack-dev-server": "^1.14.0", 
    "yargs": "^4.7.1" 
    } 
} 

답변

0

나는 창문에 작동합니까하고 그 위에 부드러운 실행 일을 만들 수있는 악몽은, 모든 맥에 있지만 창문에 괜찮 았는데, 그래서 이것은 Windows 및 말대꾸 만 잘못되면 당신은 추가해야 할 수도 있습니다 경로를 수동으로 Sass 로더에 연결하십시오.

Windows에서 트릭

은 여기에 있습니다 :

  • 표시 숨김 파일 및 폴더.
  • '사용자/APPDATA'에서 폴더를 확인, 경로해야한다 : C : \ 사용자 \ 사용자 \의 AppData \ \의 NPM에게
  • 로밍는 Windows에 환경 변수를 추가 NODE_PATH과 nodeModules C를 가리 : \ Users \ user \ AppData \ Roaming \ npm \ nodeModules
  • 실행 npm install -g
  • 터미널을 닫았다가 다시 엽니 다.

내가 말대꾸 로더 3.0을 사용하고, 내 webpack.config에이처럼 :

"autoprefixer-loader": "3.1.0" 
"sass-loader": "^3.0.0", 
"style-loader": "0.12.4" 
:

const path = require("path"); 
const srcPath = path.join(__dirname, 'src'); 
const sassLoaders = [ 
    "css-loader", 
    "autoprefixer-loader?browsers=last 2 version", 
    "sass-loader?indentedSyntax=sass&includePaths[]=" + path.resolve(__dirname, "./src"), 
]; 

나는로드 내 package.json에이

내 결심은 내가 reserached로는 지금까지 Windows에서 필요한 path.sep 사용

resolve: { 
    extensions: ["", ".js", ".scss"], 
    modulesDirectories: ["src", "node_modules"], 
    root: [__dirname + path.sep + 'scripts'], 
    } 

이런 식으로 사용하는 로더의 경우, 모듈에 Sass 로더가없는 것으로 나타났습니다.

{test: /\.scss$/, loaders: ["style", "css", "sass"]}, 
{test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader")}, 
관련 문제