docker中的vue pwa - 找不到模块'chalk'

Posted

技术标签:

【中文标题】docker中的vue pwa - 找不到模块\'chalk\'【英文标题】:vue pwa in docker - cannot find module 'chalk'docker中的vue pwa - 找不到模块'chalk' 【发布时间】:2018-11-09 06:30:07 【问题描述】:

这是我关于 *** 的第一个问题。感谢大家对这个绝对精彩的论坛!

我尝试在 docker 中运行 vue pwa。我使用 vue-cli 来设置 pwa 应用程序。本地安装运行没问题。

然后我尝试 dockerize 项目。 我尝试使用以下 docker 代码:

# Start with a Node.js image.
FROM node:10

# Make directory to install npm packages
RUN mkdir /install

ADD ["./code/package.json", "/install"]
WORKDIR /install

RUN npm install --verbose

ENV NODE_PATH=/install

# Copy all our files into the image.
RUN mkdir /code
WORKDIR /code
COPY . /code/

EXPOSE 8080
CMD npm run dev

问题是在启动组合时出现错误:

web_1        | internal/modules/cjs/loader.js:573
web_1        |     throw err;
web_1        |     ^
web_1        | 
web_1        | Error: Cannot find module 'chalk'
...

这几天我尝试了不同的方法。但我看不到任何解决方案。我想念什么吗?有不兼容吗?

我也试过完全改成yarn但是效果是一样的。所以我认为安装软件包没有问题。 Node_Path 变量会不会有问题?

提前感谢您的支持!

【问题讨论】:

我认为我没有解决您问题的方法,因此请将此视为提示:--dev 标志在当前 npm 版本中已弃用(如果您不这样做,请检查您的版本)不会收到警告);实际上你不想only npm install dev 包——你想在开发的时候安装all包。 P.S.:第一个问题写得很好:-) 谢谢。我编辑了文件。正如预期的那样,没有区别。现在它应该遵循最新的规则。 npm install won't install devDependencies的可能重复 我认为没有关系。因为只有“粉笔”模块似乎有问题。 devDependencies 中的其他包已正确安装。 【参考方案1】:

面对同样的问题,

通常你不会为生产安装任何 devDependencies,因此当 NODE_ENV=production 时,NPM/Yarn 不会安装 devDependencies。

对于 docker 用例,当我们在 docker contianer 中构建静态站点时,我们可能需要使用 NODE_ENV = production 来替换一些 PRODUCTION VARIABLES,因此我们需要使用 NODE_ENV = production 但还要安装 dev 依赖项。

一些解决方案

1 - 将所有内容从 devDependencies 转移到依赖项

2 - 不要将 NODE_ENV=production 设置为 yarn install || npm install,模块安装后才设置

3 - 对于 YARN,NODE_ENV=production yarn install --production=false,应该有 NPM 等价物

4 -(未测试),其他名称 I.E NODE_ENV=prod,而不是全名生产,但您可能需要使用其他依赖于 NODE_ENV=production 的配置

【讨论】:

以上是关于docker中的vue pwa - 找不到模块'chalk'的主要内容,如果未能解决你的问题,请参考以下文章

Docker - 在 docker 容器日志中找不到模块

Vue PWA模板,使用SVG精灵

如何修复“找不到模块 vue-cli-service.js”?

找不到模块“vue-xxx”的声明文件

docker-compose 中的 Yarn 命令找不到 && 命令

在使用 jest 的 vue 测试中找不到模块“@jest/globals”