这里有一个与 Vue 2 相关的奇怪问题,我之前遇到过一两次这个问题,并通过找到导入 Vue 的其他实例/版本以删除 $attrs/$listeners 警告的罪魁祸首来解决它。
此后,我创建了多个 Docker 容器,并将应用程序的区域移动到其中(前端/mysql/php)等,所有这些都使用 nginx。从那时起,“您正在开发模式下运行 Vue。”消息出现了 3 次。另外, $attrs/$listeners 警告似乎出现在一些不同的第三方软件包上,并且没有出现在原始设置上,这使我相信这可能是容器的问题(这与 ' Draggable' 组件,它在不同的页面/Vue 应用程序上提到了很多):
我尝试过的解决方案:
mix.alias({
'@': path.join(__dirname, 'resources/js'),
'~': path.resolve(__dirname, 'resources/sass/'),
vue$: path.resolve('./node_modules/vue/dist/vue.runtime.esm.js')
})
尝试将有问题的第三方包移至他们自己的插件中
尝试通过 ssh 进入前端容器,看看是否在任何时候都多次包含
node_modules
从而导致问题
在对所有内容进行 Docker 化之前,尝试确保节点和 npm 版本与旧环境相同。
尝试了以前环境中的旧package.json,清除了package-lock.json,npm缓存并删除了node_modules以再次运行npm安装
我导入 Vue 的唯一位置是 bootstrap.js 文件,如
import Vue from 'vue';
。我的代码库中没有其他地方像这样导入 Vue,也没有从 CDN 包含它。
前端容器的 docker-compose.yml 文件:
frontend:
container_name: frontend
build:
context: .
dockerfile: ./Dockerfile.dev
target: frontend
command:
- /bin/bash
- -c
- |
npm install
npm run watch
volumes:
- '.:/opt/apps/projectx'
- '/opt/app/node_modules/'
networks:
- testnetwork
任何潜在的指示将不胜感激。
由于我们无法使用简单的示例来重现您的问题,因此这将是一场猜谜游戏,但重要的一点是您提到了这一点:
尝试了以前环境中的旧package.json,清除了package-lock.json,npm缓存并删除了node_modules以再次运行npm安装
在我自己的应用程序中,我从不运行
npm install
,而是运行 npm ci
来在 package-lock.json
中定义完全相同的构建和环境,这是在 npm install
阶段首次安装的包和依赖项的版本。
执行所有现有依赖项的全新安装,而npm ci
尝试在可能的情况下更新当前依赖项npm install
您应该尝试
npm ci
以获得依赖项,因为它们在前一个环境中与非 Docker 化环境中的工作 package-lock.json
一起工作。
npm ci
文档以获取更多信息