Как получить все файлы изображений в каталоге, используя vue.js / nuxt.js - PullRequest
0 голосов
/ 08 января 2019

Я работаю над проектом nuxt.js и получаю сообщение об ошибке:

В браузере я вижу эту ошибку:

__webpack_require__(...).context is not a function

И в терминале я получаю эту ошибку:

Critical dependency: require function is used in a way in which dependencies cannot be statically extracted 

Вот мой код

<script>
export default {
  name: 'SectionOurClients',
  data() {
    return {
      imageDir: '../assets/images/clients/',
      images: {},
    };
  },

  mounted() {
    this.importAll(require.context(this.imageDir, true, /\.png$/));
  },

  methods: {
    importAll(r) {
      console.log(r)
    },
  },
};
</script>

Я использовал приведенный выше скрипт из ЗДЕСЬ .

Пожалуйста, помогите, спасибо.


РЕДАКТИРОВАТЬ : После ответа @ MaxSinev вот мой рабочий код:

<template lang="pug">
  .row
    .col(v-for="client in images")
      img(:src="client.pathLong")
</template>

<script>
export default {
  name: 'SectionOurClients',
  data() {
    return {
      images: [],
    };
  },

  mounted() {
    this.importAll(require.context('../assets/images/clients/', true, /\.png$/));
  },

  methods: {
    importAll(r) {
      r.keys().forEach(key => (this.images.push({ pathLong: r(key), pathShort: key })));
    },
  },
};
</script>

1 Ответ

0 голосов
/ 09 января 2019

Из документов веб-пакета:

Аргументы, передаваемые require.context, должны быть литералами!

Так что я думаю, что в вашем случае парсинг require.context не удался.

Попробуйте передать литерал вместо imageDir переменная

mounted() {
    this.importAll(require.context('../assets/images/clients/', true, /\.png$/));
},

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...