2016-03-02 1 views
1

Я использую webpack и babel для создания приложения с использованием синтаксиса ES6. Проблема в том, что я не могу импортировать express.Не удалось импортировать Express с Babel и Webpack

(Примечание: Я в состоянии импортировать (и требует) модуль узла "путь", не проверял больше)

Вот мое приложение:

import express from 'express';

Даже ниже результаты в ту же ошибку:

var app = require('express');

Вот мой webpack.config.js

module.exports = { 
    entry: './src/app.js', 
    output: { 
     path: 'builds', 
     filename: 'bundle.js' 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.js/, 
       loader: 'babel', 
       include: __dirname + '/src', 
       exclude: /node_modules/, 
       query: { 
        presets: ['es2015'] 
       } 
      } 
     ], 
    } 
}; 

Я попытался следующие, а также:

exclude: [/node_modules/], 
exclude: __dirname + '/node_modules', 

Но я до сих пор продолжаю получать очень большой след стека, который начинается с:

WARNING in ./~/express/lib/view.js 
Critical dependencies: 
78:29-56 the request of a dependency is an expression 
@ ./~/express/lib/view.js 78:29-56 

ERROR in ./~/express/lib/request.js 
Module not found: Error: Cannot resolve module 'net' in /home/projects/node_modules/express/lib 
@ ./~/express/lib/request.js 18:11-25 

ERROR in ./~/express/lib/view.js 
Module not found: Error: Cannot resolve module 'fs' in /home/projects/node_modules/express/lib 
@ ./~/express/lib/view.js 18:9-22 

И заканчивается

@ ./~/mime/mime.js 87:12-35 

ERROR in ./~/mime-db/db.json 
Module parse failed: /home/projects/node_modules/mime-db/db.json Line 2: Unexpected token : 
You may need an appropriate loader to handle this file type. 
| { 
| "application/1d-interleaved-parityfec": { 
|  "source": "iana" 
| }, 
@ ./~/mime-db/index.js 11:17-37 

I gu Это потому, что папка node_modules не игнорируется?

Кроме того, это мой package.json, если возможно, модуль версии проблема:

{ 
    "name": "testing", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "MIT", 
    "dependencies": { 
    "express": "^4.13.4" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.6.0", 
    "babel-loader": "^6.2.4", 
    "babel-preset-es2015": "^6.6.0", 
    "webpack": "^1.12.14" 
    } 
} 
+0

У меня также есть этот выпуск! Получение тонны 'Не удается разрешить 'fs'' и' Не удается разрешить' net '' –

ответ

1

Это может быть исправлено с помощью JSON-погрузчик:

npm install json-loader --save-dev 

И в webpack.config добавить этот загрузчик:

{ test: /\.json$/, loader: "json-loader" } 
+0

Зачем мне нужно добавить другого загрузчика, чтобы исправить проблему с каким-то другим загрузчиком? Почему я не могу игнорировать node_modules? –

+0

Я не копался в этом вопросе слишком глубоко, просто исправил для себя. Похоже, что webpack находит mime/db.json и не может работать с этим типом файла. –

+0

Также у вас возникнут проблемы с модулями node.js, такими как «net», «fs» и т. Д., Если вы не укажете цель: «узел» в конфигурации webpack. Некоторые люди создают разделенную конфигурацию для интерфейса и бэкэнд. –

0

Пожалуйста, посмотрите на это answer. SudoPlz - общий рабочий пример. Похоже, метод Майкл Плахов предложил.

+0

Я не хочу связывать выражение в свой код, как в ответе. Я просто хочу запустить трансвестир Babel. Вот и все. Нет модулей узлов или комплектации или чего-либо еще. –

+0

Если вы хотите просто перекрыть, почему бы не написать сценарий npm, чтобы передать ваш экспресс-код? Webpack предназначен для упаковки материалов для интерфейса. – Sgnl

+0

этот ответ работает для меня .. как вопрос говорит import express с webpack .. но он также упаковал код узла в браузере – Alexander