Vue webpack 动态导入需要不工作
Vue webpack dynamic import with require not working
我正在构建一个播放不同声音的应用程序,我制作了一个包含许多噪声组件的 NoiseMix 组件。每个噪音都应该有自己的 url 参数来加载实际的 mp3,但我在处理静态文件时遇到了问题。
在 NoiseMix 中我有这个数据:
data: () => {
return {
sounds: [
{ id: 1,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-cloud-rain",
name: "Rain",
volume: 50
}, {
id: 2,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-wind",
name: "Wind",
volume: 50
}, {
id: 3,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-water",
name: "Waves",
volume: 75
}
]
}
},
我的噪音成分看起来像这样:
<template>
<div class="single-noise">
<div class="single-noise__icon">
<i :class="icon"></i><br />
</div>
<div class="single-noise__content">
ID: {{id}}<br />
Name: {{name}}<br />
Sound URL: {{url}}<br />
Volume: {{volume}}<br />
<input type="range" min="0" max="100" name="" v-model="volume"><br />
audio:
<audio controls>
<source :src="trackUrl" type="audio/mpeg">
</audio>
</div>
</div>
</template>
<script>
export default {
name: "Noise",
props: {
url: String,
icon: String,
name: String,
id: Number,
volume: Number,
},
computed: {
trackUrl () {
// THIS LINE IS THE PROBLEM
// If I use require('@' + this.url); the app doesn't load at all and there's no error
return require('@' + '/assets/sounds/rain.mp3');
}
}
}
</script>
Webpack 需要一些帮助来获取动态导入的正确路径(我怀疑问题出在单独使用别名上,但我还没有对其进行足够的测试。)尝试:
return require('@/assets/sounds/' + this.filename)
它看起来与您所拥有的基本相同,但它给出了预期的结果。
我正在构建一个播放不同声音的应用程序,我制作了一个包含许多噪声组件的 NoiseMix 组件。每个噪音都应该有自己的 url 参数来加载实际的 mp3,但我在处理静态文件时遇到了问题。
在 NoiseMix 中我有这个数据:
data: () => {
return {
sounds: [
{ id: 1,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-cloud-rain",
name: "Rain",
volume: 50
}, {
id: 2,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-wind",
name: "Wind",
volume: 50
}, {
id: 3,
url: "/assets/sounds/rain.mp3",
icon: "fas fa-water",
name: "Waves",
volume: 75
}
]
}
},
我的噪音成分看起来像这样:
<template>
<div class="single-noise">
<div class="single-noise__icon">
<i :class="icon"></i><br />
</div>
<div class="single-noise__content">
ID: {{id}}<br />
Name: {{name}}<br />
Sound URL: {{url}}<br />
Volume: {{volume}}<br />
<input type="range" min="0" max="100" name="" v-model="volume"><br />
audio:
<audio controls>
<source :src="trackUrl" type="audio/mpeg">
</audio>
</div>
</div>
</template>
<script>
export default {
name: "Noise",
props: {
url: String,
icon: String,
name: String,
id: Number,
volume: Number,
},
computed: {
trackUrl () {
// THIS LINE IS THE PROBLEM
// If I use require('@' + this.url); the app doesn't load at all and there's no error
return require('@' + '/assets/sounds/rain.mp3');
}
}
}
</script>
Webpack 需要一些帮助来获取动态导入的正确路径(我怀疑问题出在单独使用别名上,但我还没有对其进行足够的测试。)尝试:
return require('@/assets/sounds/' + this.filename)
它看起来与您所拥有的基本相同,但它给出了预期的结果。