【问题标题】:Parcel build failing with dockerfile on @parcel/resolver-default: Cannot load fileParcel 构建失败,dockerfile 在@parcel/resolver-default 上:无法加载文件
【发布时间】:2022-01-26 20:48:42
【问题描述】:

首先是我的 package.json(已修整):

{
  "name": "polk-auction-ui",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    [...]
  },
  "scripts": {
    "start": "cross-env NODE_ENV=local parcel ./src/index.html -p 3000",
    "start:prod": "cross-env NODE_ENV=prod parcel ./src/index.html -p 3000",
    "test": "jest",
    "build:prod": "cross-env NODE_ENV=prod parcel build ./src/index.html"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "devDependencies": {
    [...]
  },
  "jest": {    
    [...]
  }
}

码头文件:

# Build step
FROM node:14 as build
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . ./
RUN yarn build:prod

# Run step
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

最后是 .dockerignore :

node_modules
dist
.parcel-cache
.env.local
.gitignore
README.md

在本地使用包裹构建反应应用时

yarn build:prod

它确实构建正确。

但是当我运行以下命令时:

docker build -t polk-auction-ui .

它在 [build 6/6] 上失败并出现以下错误(已删除警告):

#12 4.440 @parcel/core: Failed to resolve '../common/ToolTip' from
#12 4.440 './src/components/crowdloan/CrowdloanTable.tsx'
#12 4.440
#12 4.440   /app/src/components/crowdloan/CrowdloanTable.tsx:26:11
#12 4.440     25 |           <th>Lease Periods</th>
#12 4.440   > 26 |           <th>Raised</th>
#12 4.440   >    |           ^
#12 4.440     27 |           <th />
#12 4.440     28 |           <th />
#12 4.440
#12 4.441 @parcel/resolver-default: Cannot load file '../common/ToolTip' in
#12 4.441 './src/components/crowdloan'.
#12 4.441 ???? Did you mean '../common/Tooltip'?
#12 4.442 ???? Did you mean '../common/Common'?

这很奇怪,因为 CrowdloanTable.tsx 确实有以下导入: 从'../common/ToolTip'导入{ Tooltip };

加上它在本地工作,那么为什么使用 docker build 会失败?欢迎任何建议和帮助。

【问题讨论】:

    标签: reactjs docker dockerfile parceljs


    【解决方案1】:

    在您最后的日志中,最后 4 行建议您不要导入 '../common/ToolTip',而是导入 '../common/Tooltip'。其中“tip”有一个小写字母 t。

    如果将 import 语句更改为带有小写字母 t 的语句并尝试在 Docker 中构建它会发生什么?

    【讨论】:

    • 我没听明白,因为它在本地运行 parcel build 命令时有效。如此明显但未能抓住它,因为我认为这是由于一些错误配置造成的。谢谢:)
    • 是的,可以理解。我被你的日志弄糊涂了,这是我看到它的唯一原因哈哈。我想知道,这个更改后它仍然可以在您的主机上编译吗?
    猜你喜欢
    • 2021-11-16
    • 2021-08-29
    • 2020-12-27
    • 2020-11-02
    • 2022-01-13
    • 2021-07-14
    • 2016-11-04
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多