2016-04-20 4 views
1

Я пытаюсь создать простое приложение, используя стек MEAN, и у меня возникает проблема с Webpack. Когда я бегу «Webpack» из консоли, я получаю следующие ошибки и предупреждения:предупреждения и ошибки конфигурации webpack: «parse parse failed failed»

WARNING in ./~/require_optional/package.json 
Module parse failed: C:\Build\myapp\node_modules\require_optional\package.json Unexpected token (2:9) 
You may need an appropriate loader to handle this file type. 

WARNING in ./~/require_optional/README.md 
Module parse failed: C:\Build\myapp\node_modules\require_optional\README.md Unexpected character '#' (1:0) 
You may need an appropriate loader to handle this file type. 

WARNING in ./~/require_optional/LICENSE 
Module parse failed: C:\Build\myapp\node_modules\require_optional\LICENSE Unexpected token (1:40) 
You may need an appropriate loader to handle this file type. 

ERROR in ./~/constants-browserify/constants.json 
Module parse failed: C:\Build\myapp\node_modules\constants-browserify\constants.json Unexpected token (2:12) 
You may need an appropriate loader to handle this file type. 

Так что мои вопросы:

1. Если Webpack даже пытается загрузить файлы, такие как README.md и ЛИЦЕНЗИЯ? Почему им это нужно?

2. У меня есть json-loader, подключенный и ищущий файлы .json, так почему я все еще получаю предупреждения и ошибки об этом?

Вот мой Webpack конфигурационный файл:

webpack.config.js

var config = require('./environment/shared.js') 
var debug = config.env !== 'production'; 
var webpack = require('webpack'); 

module.exports = { 
    context: __dirname, 
    devtool: debug ? 'inline-sourcemap' : null, 
    entry: './public/js/app.js', 
    output: { 
     path: __dirname + '/public/js', 
     filename: 'bundle.min.js', 
    }, 
    plugins: debug ? [] : [ 
     new webpack.optimize.DedupePlugin(), 
     new webpack.optimize.OccurenceOrderPlugin(), 
     new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }), 
    ], 
    module: { 
     loaders: [ 
      { 
       test: '/\.json/', 
       loader: 'json', 
      }, 

      { 
       test: '/\.node$/', 
       loader: 'node-loader', 
      }, 
     ], 
    }, 
    resolve: { 
     extensions: ['', '.js', '.json', '.node'], 
    }, 
}; 
+0

Можете ли вы попробовать добавить 'include: [path.join (__ dirname, 'node_modules/constants-browserify/constants.json')]' к этому определению * json-loader *? Если это работает, добавьте другие файлы аналогичным образом, чтобы указать файлы для обработки явно. Этот ** require_optional ** бит более проблематичен, но, возможно, это будет отправной точкой. –

ответ

1

вопрос 1: Я думаю, что есть что-то вроде следующее в вашем коде. а именно, требуется модуль, имя которого находится в переменной. В этом случае webpack точно не знает, какой модуль вам нужен, поэтому он загрузит весь файл.

const moduleName = xxx const module = require(moduleName)

вопрос 2: вам нужно добавить { test: /\.json$/, loader: "json" } в module/loaders для загрузки файла JSON.

Смежные вопросы