【问题标题】:gulp & webpack: ERROR in Entry module not foundgulp & webpack:找不到入口模块中的错误
【发布时间】:2017-04-27 04:46:59
【问题描述】:

我使用webpack 处理JavaScript(捆绑ES6 模块、转换为ES5 等)和gulp - 用于其他任务(jadesass 等)。我想将webpack 配置保留在webpack.config.js 中,但要通过gulp 任务执行webpack


项目结构

???? 发展 

 ???? es6 - 源代码

   ​​​​main.js

 ???? js - 输出 JS 用于开发

   ​​​​index.js

???? 生产

???? webpack.config.js

???? gulpfile.js


gulpfile.js

var  gulp = require('gulp'), 
        //...
     gulpwebpack = require('gulp-webpack')
        
        
gulp.task('gulpwebpack', function(){ 
   
    return gulp.src('development/03_es6/main.js')
        .pipe(gulpwebpack(require('./webpack.config.js')))
        .pipe(gulp.dest('development/js/'));
  
});

// ...

gulp.task('watch', ['browser-sync', 'jade', 'sass'], function() {
    // ...
    gulp.watch('development/03_es6/*.js', ['test']);
});

gulp.task('default', ['watch']);
    

webpack.config.js

const NODE_ENV = process.env.NODE_ENV || 'development';

module.exports = {
    
    context: __dirname + '/development',
    
    entry: './03_es6/main.js',
    
    output: {
        path: __dirname + '/development/js/',
        filename: 'index.js'
    },
        
    module: {
            rules: [
                {
                    test: /\.jsx?$/,
                    exclude: /node_modules/,
                    use: ['babel-loader']
                }
            ]
        }
    
    //watch: NODE_ENV === 'development'
};

问题

如果只是从控制台执行webpack(这意味着独立于gulp执行webpack),一切都会正确。但是如果执行gulp gulpwebpack,就会出现错误信息:

 ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' ./development/03_es6/main.js in C:\...\projectFrolder/development

我知道错误的根源在这里:

// ...

context: __dirname + '/development',

entry: './03_es6/main.js',

output: {

// ...

但是development/03_es6/main.js./development/03_es6/main.js 也不起作用。 Gulp 无法正确读取webpack.config.js,不是吗?

【问题讨论】:

  • path.resolve(__dirname, '/development')
  • 感谢您的评论回答。请告诉我需要在哪里添加这一行。在webpack2 配置中,解析resolve: { ... } 中的定义,但看起来我需要在其他地方添加path.resolve(__dirname, '/development')

标签: javascript webpack gulp


【解决方案1】:

我认为,你应该切换到

'use strict';

const gulp = require('gulp'),
      named = require('vinyl-named'),
      webpack = require('webpack-stream');

gulp.task('webpack', function () {
  gulp.src('development/03_es6/main.js')
      .pipe(named())
      .pipe(webpack(require('./webpack.config.js')))
      .pipe(gulp.dest('./build'))
});

从 webpack.config.js 中删除条目:

module.exports = {

context: __dirname + '/development',

output: {
    path: __dirname + '/development/js/',
    filename: 'index.js'
},

module: {
        rules: [
            {
                test: /\.jsx?$/,
                exclude: /node_modules/,
                use: ['babel-loader']
            }
        ]
    }
};

【讨论】:

  • 感谢您的回答。您的设置有效!请您解释一下vynil-named在此设置中的角色吗?
猜你喜欢
  • 2019-07-27
  • 2020-05-27
  • 1970-01-01
  • 2019-01-19
  • 2016-07-23
  • 2015-06-12
  • 2016-01-23
  • 1970-01-01
相关资源
最近更新 更多