Мой импорт Vue NPM может найти модули, только если они находятся внутри папки src, а не в корне проекта

В корне моего приложения у меня есть / node_modules / и / src /

Я запустил npm install и установил пакеты, используя npm install axios --save и т. д. Для всех моих зависимостей Я вижу, что они добавляются в каталог node_modules, однако мой проект vue не компилируется со следующей ошибкой:

Failed to compile.

./src/main.js
Module not found: Error: Can't resolve 'axios' in '/app/src'

Если я вручную создаю папку node_modules внутри моего каталога / src / и размещаю axios и другие мои зависимости, это работает ... но, судя по тому, что я прочитал, я не должен обрабатывать свои модули node таким образом. Кажется, мне нужно, чтобы мои зависимости указывали на другой путь?

Что странно, так это то, что мой импорт Vue из 'vue' и App из './App.vue' работает нормально, это в основном все, что потом не компилируется ..

Мой main.js:

import Vue from 'vue'
import App from './App.vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import firebase from 'firebase'
import "firebase/auth";
import "firebase/analytics";
import "firebase/firestore";
import moment from 'moment'

Vue.use(VueAxios, axios)

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  firebase: firebase,
}).$mount('#app')

Я также попытался удалить все модули узлов, очистить кеш NPM и переустановить зависимости NPM, но безрезультатно.

пожалуйста, покажите мне весь ваш main.js, а не только импорт

Deniz 05.04.2021 20:45

@Deniz main.js обновлен

Forte 05.04.2021 20:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
17
1

Ответы 1

вместо использования функции use для глобального добавления вашего экземпляра axios не могли бы вы попробовать добавить его следующим образом:

import Vue from 'vue'
import App from './App.vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import firebase from 'firebase'
import "firebase/auth";
import "firebase/analytics";
import "firebase/firestore";
import moment from 'moment'

Vue.config.productionTip = false

Vue.prototype.$axios = Axios; //<---- like that

new Vue({
  render: h => h(App),
  firebase: firebase,
}).$mount('#app')

после этого попробуйте снова скомпилировать. затем вы можете вызывать свой экземпляр axios для каждого компонента с помощью this.$axios

Привет, Дениз, я попробовал, и он выдает ту же ошибку: Failed to compile. ./src/main.js Module not found: Error: Can't resolve 'axios' in '/app/src'

Forte 05.04.2021 21:01

прямо ниже, где вы делаете свои аксиомы импорта, попробуйте следующее: console.info(axios) проверит результат и скажет мне, дает ли он подсказку. в противном случае попробуйте сделать снимок экрана вашего дерева проекта со всеми развернутыми, если это возможно

Deniz 05.04.2021 21:06

Console.log не производит никакой дополнительной информации, точно такая же ошибка, как и выше, вот скриншот моей структуры проекта: i.imgur.com/DmLKVup.png Если я переименую этот node_modulesOLD в node_modules, проект будет скомпилирован, если я оставлю его как СТАРЫЙ, я получу указанная выше ошибка. Хотя загружать 2 набора пакетов узлов в 1 проект кажется супер нелогичным. Не обращайте внимания на этот странно названный ReadMe, я просто стер важный заголовок.

Forte 05.04.2021 21:44

что это за package-lock.json в папке src? package-lock должен находиться только в корневом каталоге. Также удалите node_modulesOLD. Лучше всего удалить все ваши package-lock.json и попробовать снова npm install

Deniz 05.04.2021 21:47

package-lock.json, package.json и node_modules должны находиться в корневой папке. они должны находиться в той же папке, где находится ваш правильный node_modules

Deniz 05.04.2021 21:51

Удалил все файлы node_module и package-lock.json, перезапустил npm install из корня проекта: не повезло, и все равно выдает ту же ошибку. ./src/main.js Module not found: Error: Can't resolve 'axios' in '/app/src' Сейчас это текущая структура проекта: i.imgur.com/vBEovgc.png

Forte 05.04.2021 22:02

это проект, созданный vue-cli?

Deniz 05.04.2021 22:10

Не уверен, что это первое происхождение, это был разветвленный проект из github, он работает внутри контейнера докеров, если это помогает

Forte 05.04.2021 22:14

Аааа .. покажите мне файл докеров, пожалуйста. Может это из-за docker Environment

Deniz 05.04.2021 22:27

Dockerfile: i.imgur.com/niIPU1x.png

Forte 05.04.2021 23:10

Я только что заметил, что он работает с npm run serve, но не с docker run -v

Forte 06.04.2021 01:07

Другие вопросы по теме