多个“您正在开发模式下运行 Vue。” & $attrs 是只读的。 / $listeners 是只读的

问题描述 投票:0回答:1

这里有一个与 Vue 2 相关的奇怪问题,我之前遇到过一两次这个问题,并通过找到导入 Vue 的其他实例/版本以删除 $attrs/$listeners 警告的罪魁祸首来解决它。

此后,我创建了多个 Docker 容器,并将应用程序的区域移动到其中(前端/mysql/php)等,所有这些都使用 nginx。从那时起,“您正在开发模式下运行 Vue。”消息出现了 3 次。另外, $attrs/$listeners 警告似乎出现在一些不同的第三方软件包上,并且没有出现在原始设置上,这使我相信这可能是容器的问题(这与 ' Draggable' 组件,它在不同的页面/Vue 应用程序上提到了很多):

我尝试过的解决方案:

  1. 为Vue设置别名如:
mix.alias({
    '@': path.join(__dirname, 'resources/js'),
    '~': path.resolve(__dirname, 'resources/sass/'),
    vue$: path.resolve('./node_modules/vue/dist/vue.runtime.esm.js')
})
  1. 尝试将有问题的第三方包移至他们自己的插件中

  2. 尝试通过 ssh 进入前端容器,看看是否在任何时候都多次包含

    node_modules
    从而导致问题

  3. 在对所有内容进行 Docker 化之前,尝试确保节点和 npm 版本与旧环境相同。

  4. 尝试了以前环境中的旧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

任何潜在的指示将不胜感激。

vue.js webpack vuejs2 laravel-mix
1个回答
0
投票

由于我们无法使用简单的示例来重现您的问题,因此这将是一场猜谜游戏,但重要的一点是您提到了这一点:

尝试了以前环境中的旧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
文档以获取更多信息

© www.soinside.com 2019 - 2024. All rights reserved.