Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker节点构建-babel预设和深度模块错误_Node.js_Docker_Webpack_Babeljs - Fatal编程技术网

Node.js Docker节点构建-babel预设和深度模块错误

Node.js Docker节点构建-babel预设和深度模块错误,node.js,docker,webpack,babeljs,Node.js,Docker,Webpack,Babeljs,在解决了几个额外的巴别塔预设(我的npm脚本所构建的)后,然后在/node_modules/react dropzone/.babelrc中添加了一个未知插件“add module exports”。巴别塔lrc,我现在遇到了一个npm重建节点sass的要求——force 另外,webpack的构建需要很长时间,3-4分钟 我感觉我的node\u模块文件夹或环境在此未正确设置。我目前的设置是否做了一些我错过的愚蠢的事情 B.法律改革委员会 { "compact": false, "pre

在解决了几个额外的巴别塔预设(我的npm脚本所构建的)后,然后在/node_modules/react dropzone/.babelrc中添加了一个未知插件“add module exports”。巴别塔lrc,我现在遇到了一个
npm重建节点sass的要求——force

另外,webpack的构建需要很长时间,3-4分钟

我感觉我的node\u模块文件夹或环境在此未正确设置。我目前的设置是否做了一些我错过的愚蠢的事情

B.法律改革委员会

{
  "compact": false,
  "presets": [
    "es2015",
    "es2015-loose",
    "stage-2",
    "stage-1",
    "stage-0",
    "react"
  ],
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}
Dockerfile:

FROM node:7.7.3

RUN npm install -g pm2 babel-cli

# Useful for reloading npm install if package json changed
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /usr/src/app && cp -a /tmp/node_modules /usr/src/app

COPY . /usr/src/app
WORKDIR /usr/src/app
ADD .babelrc server.js index.js /usr/src/app/

CMD ["pm2", "start", "./index.js", "--no-daemon"]
EXPOSE 2020
docker-compose.yml

doc:
  build: .
  ports:
    - "2020:2020"
  volumes:
    - .:/usr/src/app/
    - /usr/src/app/node_modules
/index.js

require('babel-register');
require('./server.js');
/server.js

var express = require('express');
var path = require('path');

const isDeveloping = process.env.NODE_ENV !== 'production';
const PORT = isDeveloping ? 2020 : 2020; // process.env.PORT - docker?
const app = express();


if (isDeveloping) {
  let webpack = require('webpack');
  let webpackMiddleware = require('webpack-dev-middleware');
  let webpackHotMiddleware = require('webpack-hot-middleware');
  let config = require('./webpack.prod.config.js');
  const compiler = webpack(config);
  const middleware = webpackMiddleware(compiler, {
  publicPath: config.output.publicPath,
    noInfo: true,
    quiet: false,
    lazy: false,
    watchOptions: {
     aggregateTimeout: 300,
     poll: true
   },
   stats: {
    colors: true,
   }
 });

const bundlePath = path.join(__dirname, './dist/index.html');

app.use(middleware);
app.use(webpackHotMiddleware(compiler));
app.get('*', function response(req, res) {
res.write(middleware.fileSystem.readFileSync(bundlePath));
res.end();
});

 } else {
   console.log(process.env.NODE_ENV)
   const staticPath = path.join(__dirname, 'dist')
   app.use(express.static(staticPath));
 }

 app.listen(PORT)
 console.log('Open up http://localhost:' + PORT);

我认为,从你的表现来看,你的配置很好

现在遇到了npm重建节点sass的要求--强制

您是否在项目文件夹中设置了
.dockrignore
文件?如果没有,请添加一个,并在该文件中包含
节点_模块
。它的格式与
.gitignore
相同

我的想法是,您错误地将主机操作系统的
node\u modules
文件夹复制到Docker映像中。
npm安装
进程没有替换它,因为它看到包已经存在

通过添加
.dockerginore
并告诉它不要复制node\u modules文件夹,您将强制docker映像安装模块。这样,将正确编译
节点sass
模块(需要本机构建)

网页包需要很长时间构建,3-4分钟

你在mac电脑上?Docker有一个已知的问题,即硬盘访问速度比本机硬盘访问速度慢很多倍,甚至比linux上的Docker慢很多倍

Windows没有mac那么糟糕,但它仍然比linux更糟糕

你对此无能为力。。。不幸的是,几乎什么都没有。您已经在为node_modules文件夹使用卷。。。您可以尝试将一个卷添加到webpack正在构建内容的临时文件夹中,但您只能从中获得大约25%的性能提升