2016-08-30 19 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 

、すべてがMacOSで正常に動作しているが、私はWindows上でそれを実行すると、私はエラーを取得:

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

このようなファイル:

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

と私はCSS-ローダーSASS-ローダスタイルローダー

がインストールされていることを確信しているこれは私の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上で動作しないと、それでスムーズに実行されているものを作るために悪夢だったが、すべてがMac上ではなく、Windows上でうまく働いたので、これは、Windowsとサスとだけ間違っている場合は、追加する必要がありますパスは手動でSass Loaderに渡されます。

Windows上のトリックはここにある:

  • 表示隠しファイルとフォルダ。
  • 「user/appData」のフォルダを確認してください。パスは次のようになります。C:\ Users \ user \ AppData \ Roaming \ npm
  • Windowsに環境変数NODE_PATHを追加し、nodeModules C: Users¥user¥AppData¥Roaming¥npm¥nodeModules
  • npm install -g
  • を実行して、ターミナルを閉じてから、再度開きます。

私はSASSローダー3.0を使用していて、私のwebpack.configではこのようなものだ:

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を持っている:

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

それは私の知る限り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")}, 
関連する問題