当我想对我的nextjs项目进行Docker化时出现问题

时间:2018-11-13 10:03:39

标签: javascript reactjs docker docker-compose next.js

我遇到一个将我的nextjs(这是SSR ReactJS的库)项目进行泊坞化的问题。当我尝试 docker-compose up 我的应用程序时,它在步骤6/8失败。显然,我的流程类型插件 plugin-transform-flow-strip-types 不受构建过程的管理。该插件已添加到我的package.json和.babelrc文件中。但是,当我使用 node start 启动项目或使用 node build 用nextjs构建项目时,一切都很好。问题与docker相关。

这是我的Dockerfile

mockMvc.perform(get("/api/users/" + id))
    .andExpect(status().isOk())
    .andExpect(jsonPath("$.id", org.hamcrest.Matchers.is(id)));

这是我的docker-compose.yml

FROM node:10.13.0
RUN mkdir -p /website
COPY . /website
WORKDIR /website
RUN yarn install --production=true
RUN yarn run build
EXPOSE 3000 9229
CMD [ "yarn", "run", "start" ]

这是我的.babelrc文件

version: "3"
services:
    app:
        container_name: website
        build: .
        ports:
            - "3000:3000"
            - "9229:9229"

运行docker-compose时,这是cli输出

{
    "presets": [
      "next/babel"
    ],
    "plugins": [
      "@babel/plugin-transform-flow-strip-types"
    ]
}

这是我的package.json

{ 
   Error: (client) ./pages/index.jsx
   Module build failed (from ./node_modules/next/dist/build/webpack/loaders/next-babel-loader.js):
   Error: Cannot find module '@babel/plugin-transform-flow-strip-types' from '/website'
}

您有解决问题的主意吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎依赖错误的软件包,取决于6.x的Babel plugin-transform-flow-strip-types版本,而在代码中,您需要Babel 7.x版本。

运行以下命令以取决于babel 7.x版本:

npm install --save-dev @babel/plugin-transform-flow-strip-types

最后,使用以下方法从依赖项中删除旧版本:

npm uninstall babel-plugin-transform-flow-strip-types