2017-07-27 15 views
0

私はindex.ejsテンプレートファイルを使用して、HTMLのWebPACK-プラグインを使用して構築しようとした際、次のエラーがスローされます。、HTMLのWebPACK-プラグインテンプレート:モジュールのビルドに失敗しました:でSyntaxError:予期しないトークン

私のようにロードしようとしても.htmlファイルをインストールするか、ejs-loaderをインストールしても、まだ失敗します。 ejs-loaderがhtml-webpack-pluginでインストールしているかどうかはわかりません。

いくつかの他の人々はWebPACKのバージョンが1 @であり、そのリンク上の解決策は、私のために働いていなかった、同じ問題があったが、

https://github.com/jantimon/html-webpack-plugin/issues/273

ERROR in ./node_modules/html-webpack-plugin/lib/loader.js!./src/index.ejs

Module build failed: SyntaxError: Unexpected token (1:1)

Error image

SRC /index.ejs

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
    <link rel="stylesheet" href="/assets/css/bootstrap.min.css"> 
    <title>My Library</title> 
    </head> 
    <body> 
    <div class="main-content"></div> 
    <footer class="footer-container"><p><span>Source: </span><a href="https://github.com/arikanmstf/mylibrary">https://github.com/arikanmstf/mylibrary</a></p></footer> 
    </body> 
</html> 

webpack.co nfig.js:

const ExtractTextPlugin = require("extract-text-webpack-plugin"); 
const HtmlWebpackPlugin = require("html-webpack-plugin"); 
const UglifyJSPlugin = require("uglifyjs-webpack-plugin"); 
const webpack = require("webpack"); 
const argv = require("yargs").argv; 
const path = require("path"); 

const extractCSS = new ExtractTextPlugin("dist/style.css"); 

const JS_JSX_PATTERN = /\.jsx?$/; 
const SCSS_PATTERN = /\.scss$/; 
const ASSET_PATTERN = /\.(jpe?g|png|gif|svg|ttf|otf|eot|woff(2)?)(\?v=\d+)?$/; 
const DEV_SERVER_PORT = 8080; 

const configResolve = require.resolve("./src/config/" + argv.env + ".js"); 
const config = require("./src/config/" + argv.env + ".js"); 

const isProd = argv.env === 'prod'; 
const isDev = argv.env === 'dev'; 

let plugins = [extractCSS]; 
let rules = [ 
    { 
    exclude: /node_modules/, 
    loader: "babel-loader", 
    query: { 
     presets: ["react", "es2015", "stage-1"] 
    } 
    }, 
    { 
    test: SCSS_PATTERN, 
    use: extractCSS.extract({ 
     fallback: "style-loader", 
     use: [{ 
     loader: "css-loader", 
     options: { minimize: isProd } 
     }, 
     "sass-loader" 
     ] 
    }) 
    } 
]; 

if (isProd) { 
    plugins.push(
    new UglifyJSPlugin(), 
    new webpack.DefinePlugin({ 
     'process.env': { 
     NODE_ENV: JSON.stringify('production') 
     } 
    }) 
); 
} 

plugins.push(
    new HtmlWebpackPlugin({ 
    template: 'src/index.ejs' 
    }) 
); 

rules.push({ 
    test: JS_JSX_PATTERN, 
    exclude: /node_modules/, 
    enforce: 'pre', 
    loader: 'eslint-loader', 
    options: { 
    failOnWarning: false, 
    failOnError: isProd, 
    quiet: isProd 
    } 
}); 

rules.push({ 
    test: ASSET_PATTERN, 
    exclude: /node_modules/, 
    loader: 'file-loader', 
    options: { 
    name: 'dist/[path][name].[ext]?[hash]', 
    context: 'assets' 
    } 
}); 

module.exports = { 
    entry: [ 
    "./src/scripts/index.jsx", 
    "./src/style/index.scss" 
    ], 
    output: { 
    path: __dirname, 
    publicPath: config.homeUrl, 
    filename: "dist/bundle.js" 
    }, 
    module: { 
    rules: rules 
    }, 
    resolve: { 
    extensions: [".js", ".jsx"], 
    modules: [ 
     path.resolve(__dirname, './src/scripts'), 
     path.resolve(__dirname, './node_modules'), 
     path.resolve(__dirname, './assets') 
    ], 
    alias: { 
     config$: configResolve 
    } 
    }, 
    devServer: { 
    port: DEV_SERVER_PORT, 
    historyApiFallback: true, 
    contentBase: "./" 
    }, 
    plugins: plugins 
}; 

package.jsonのdepencies:

"devDependencies": { 
    "babel-core": "^6.2.1", 
    "babel-eslint": "7.2.3", 
    "babel-loader": "^7.1.0", 
    "babel-preset-es2015": "^6.1.18", 
    "babel-preset-react": "^6.1.18", 
    "chai": "^3.5.0", 
    "chai-jquery": "^2.0.0", 
    "css-loader": "^0.28.4", 
    "eslint": "3.19.0", 
    "eslint-config-airbnb": "15.0.1", 
    "eslint-loader": "1.7.1", 
    "eslint-plugin-import": "^2.7.0", 
    "eslint-plugin-jsx-a11y": "5.0.3", 
    "eslint-plugin-react": "7.0.1", 
    "extract-text-webpack-plugin": "^3.0.0", 
    "file-loader": "^0.11.2", 
    "html-webpack-plugin": "^2.29.0", 
    "jquery": "^2.2.1", 
    "jsdom": "^8.1.0", 
    "mocha": "^2.4.5", 
    "node-sass": "^4.5.3", 
    "react-router-dom": "^4.1.1", 
    "sass-loader": "^6.0.5", 
    "style-loader": "^0.18.1", 
    "uglifyjs-webpack-plugin": "^0.4.3", 
    "webpack": "^3.3.0", 
    "webpack-dev-server": "^2.6.1", 
    "yargs": "^8.0.1" 
    }, 
    "dependencies": { 
    "axios": "^0.16.1", 
    "babel-preset-stage-1": "^6.1.18", 
    "prop-types": "^15.5.10", 
    "qs": "^6.4.0", 
    "react": "^15.6.1", 
    "react-dom": "^15.6.1", 
    "react-dropzone": "^3.13.3", 
    "react-redux": "^5.0.5", 
    "react-router": "^4.1.1", 
    "redux": "^3.6.0", 
    "redux-thunk": "^2.2.0" 
    } 
+0

あなたが任意の詳細情報を取得くださいプラグインでは? 新しいHtmlWebpackPlugin({ テンプレート: 'SRC/index.ejs'、 showErrors:真 }) – 83N

+0

同じ:BabelLoaderError:でSyntaxError:予期しないトークン(1:1) – arikanmstf

+0

私はWebPACKのコンフィグとビットさびが、私は思います何が起こっているのかは、あなたのテンプレートがバベルローダーが解析できないJSファイルにバンドルされていることです。 HtmlWebpackPluginにhtmlファイル名を指定すると、まったく同じエラーが出ますか? (新しいテンプレートHtmlWebpackPlugin({テンプレート: 'src/index.ejs'、ファイル名: 'HtmlWebpackPlugin({テンプレート:' src/index.ejs '、 ファイル名:' Index_Generated.html ' ) – 83N

答えて

0

あなたはそれがすべてのファイルに適用されていますし、バベルが処理されないことを意味する、babel-loaderのためにあなたのルールにtestプロパティを追加するのを忘れHTML。技術的にはJSXと解釈されますが、<!DOCTYPE html>は有効なJSXではありません。JavaScriptの識別子には!を含めることができないためです。

すでに.js(x)のための正規表現を持っているとして、ルールは(query is deprecated、まだ動作しますので、私はまた、optionsqueryを変更)する必要があります:あなたはエラーログを有効にした場合

{ 
    test: JS_JSX_PATTERN, 
    exclude: /node_modules/, 
    loader: "babel-loader", 
    options: { 
    presets: ["react", "es2015", "stage-1"] 
    } 
}, 
関連する問題