Intereting Posts
eval "$ (docker-machine env default)" приводит к ошибке проверки соединения TLS Сертификат перезагрузки Docker Динамически получить запущенный идентификатор / имя контейнера, созданный командой запуска docker Запретить докеру перестраивать определенные части файла Dockerfile Dropwizard и Docker: конфигурация yaml не изменила порты по умолчанию Поведение Докера при монтаже новый для докеров, интересно, как читать исходный код докера? Маркировка изображений в докере Окна Docker вытаскивают изображение x509: сертификат, подписанный неизвестным органом Как docker git repo показывает разные теги в запросах на тяну, например, статус / необходимость-обзор Как запустить контейнер докера после succesfull wait-for-it script Шаблоны командной строки в Dockerfiles Почему IP и номер порта изменились в Kitematic? Контейнеры на основе хоста и контейнеры на основе изображений Доверенный надежный реестр – невозможно удовлетворить доступный слот для контейнера

Browserify / Babelify неисправность сборки gulp в контейнере Docker – не удается найти компонентный модуль

Я пишу приложение в 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 работает очень хорошо. Однако, когда моя сборка докеров достигает этапа gulp production глотки, она прерывается со следующей ошибкой после запуска задачи gulp build gulp:

 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 

Любая помощь будет оценена!

Я столкнулся с такой же проблемой при использовании докеров. На самом деле мое имя файла jsx было loginModal.jsx, и я использовал

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

когда я изменил его на

 var LoginModal = require('./loginModal'); 

он начал работать.

Это похоже на ошибку в докере, поскольку она отлично работает на моей локальной машине.