build - Docker 容器中的 Browserify/Babelify gulp 构建故障

我正在用 ES6/JSX 编写一个应用程序,所以我使用 Browserify 和 Babelify 来转换我的脚本。

我的 中的相关 gulp 任务gulpfile.babel.js :

import gulp from 'gulp';
import browserify from 'browserify';
import babelify from 'babelify';
import buffer from 'vinyl-buffer';
import source from 'vinyl-source-stream';
import runSequence from 'run-sequence';
import gulpLoadPlugins from 'gulp-load-plugins';

const $ = gulpLoadPlugins();
const reload = browserSync.reload;
const path = {
  HTML: './src/*.html',
  CSS: './src/styles/css/*.css',
  IMAGES: './src/images/*.png',
  LESS: './src/styles/less/*.less',
  JS: ['./src/js/**/*.js', './src/js/*.js', './src/js/components/*.jsx', './src/js/components/*.js'],
  DEST: 'dist',
  OUT: 'bundle.js',
  MINIFIED_OUT: 'bundle.min.js',
  ENTRY_POINT: './src/js/app.js'
};

gulp.task('copy-html', () => {
  return gulp.src(path.HTML)
    .pipe(gulp.dest(path.DEST));
});

gulp.task('copy-css', () => {
  return gulp.src(path.CSS)
    .pipe(gulp.dest(path.DEST));
});

gulp.task('copy-less', () => {
  return gulp.src(path.LESS)
    .pipe($.less({}))
    .pipe(gulp.dest(path.DEST));
});

gulp.task('copy-images', () => {
  return gulp.src(path.IMAGES)
    .pipe(gulp.dest(path.DEST));
});

gulp.task('copy', ['copy-html','copy-css','copy-less','copy-images']);

gulp.task('buildReplace', () => {
  return gulp.src(path.HTML)
    .pipe($.htmlReplace({
      'js': path.MINIFIED_OUT
    }))
    .pipe(gulp.dest(path.DEST));
});

gulp.task('build', () => {
  return browserify({
    entries: [path.ENTRY_POINT],
    extensions: ['.jsx', '.js'],
    transform: [babelify]
  })
    .bundle()
    .pipe(source(path.MINIFIED_OUT))
    .pipe(buffer())
    .pipe($.concat(path.MINIFIED_OUT))
    .pipe($.uglify())
    .pipe(gulp.dest(path.DEST));
});

gulp.task('production', () => {
  return runSequence('copy', 'buildReplace', 'build');
});

我的 Dockerfile :
# Pull nginx base image
FROM nginx:latest

# Install Node.js and other dependencies
RUN apt-get update && \
    apt-get -y install curl && \
    curl -sL https://deb.nodesource.com/setup && \
    apt-get -y install python build-essential nodejs nodejs-legacy npm

# Provides cached layer for node_modules
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /var/www/node_modules && cp -a /tmp/node_modules /var/www

# Copy custom configuration file from the current directory
COPY nginx.conf /etc/nginx/nginx.conf

# Copy static assets into var/www
COPY . /var/www

WORKDIR /var/www

# Install and utilize gulp build task
RUN npm install -g gulp
RUN gulp production

# Expose port 80
EXPOSE 80

# Start up nginx server
CMD ["nginx"]

在我的本地环境中,运行 gulp production工作得很好。但是,当我的 docker build 达到 gulp production步骤,它在 gulp build 之后出现以下错误任务开始:
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Cannot find module './components/LoginModal' from '/var/www/src/js'
    at /var/www/node_modules/browserify/node_modules/resolve/lib/async.js:55:21
    at load (/var/www/node_modules/browserify/node_modules/resolve/lib/async.js:69:43)
    at onex (/var/www/node_modules/browserify/node_modules/resolve/lib/async.js:92:31)
    at /var/www/node_modules/browserify/node_modules/resolve/lib/async.js:22:47
    at Object.oncomplete (fs.js:107:15)

它总是在找到一个组件模块时中断。我的文件结构如下所示:
public
  -- src
     -- images
        ... various pngs
     -- styles 
        -- css
           -- main.css
        -- less
           -- main.less
     -- js
        -- app.js
        -- components
           ... various jsx files
  -- Dockerfile
  -- gulpfile.babel.js
  -- package.json
  -- nginx.conf

任何帮助,将不胜感激!

最佳答案

我在使用 docker 时遇到了同样的问题。实际上我的 jsx 文件名是 loginModal.jsx 我正在使用

var LoginModal = require('./LoginModal'); //case problem

当我把它改成
var LoginModal = require('./loginModal'); 

它开始工作了。

它看起来像 docker 中的一些错误,因为它在我的本地机器上运行良好。

关于build - Docker 容器中的 Browserify/Babelify gulp 构建故障 - 找不到组件模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866058/

相关文章:

docker - 为Docker运行镜像没有看到结果

dictionary - 没有为方案WASB获取文件系统。 Hdinsight Mapreduce

docker - 在vmware中运行的docker出现x509错误

apache-spark - 如何使用作业 Spark 测量HDFS的读写时间?

hadoop - 在Hadoop分布式文件系统(HDFS)中重新分区

apache-spark - 这个简单的例子是Spark还是Hadoop?

docker - 在受限制的互联网环境中使用docker

docker - Jenkins docker plugin + commit docker sla

docker - Docker撰写:可以对依赖服务的延迟启动进行建模吗?

hadoop - 实现Hivemall回归功能的问题