javascript 'require(variable)'在next-js中不起作用

w9apscun  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(135)

我正在尝试使用next-optimised-images模块渲染图像。当我尝试按如下方式添加图像时

<img src={require(c.logo)} alt={c.title} />

我得到以下错误

但是当我硬编码src属性时

<img src={'courses' + require('../../../../mnt/nfs/a@a.com/export/dasdas22dsdd3322a/logo.png')} alt={c.title} />

它工作正常。
当我在项目目录(如require('../' + folder + '/img.png'))中使用带有图像相对路径的变量时,不会发生相同的错误。
如何解决这一问题?

brgchamk

brgchamk1#

问题解决了,但解决方案相当奇怪。我尝试了许多不同的方法,如

<img src={require(`${c.logo}`)} alt={c.title} />

--但是他们没有工作。
然后我尝试添加局部变量logo = '../folder/logo.png'并使用<img src={require(logo)} alt={c.title} />进行测试--当这也失败时我震惊了。然后我疯狂地按ctrl + z并保存--它工作了。我注意到img是这样写的

<img src={require(\`../folder/${c.logo}\`)} alt={c.title} /> 
// c.logo was computed accordingly after copying the file to the relative path

然后,我通过硬编码路径来测试绝对路径/mnt/nfs/...--令人惊讶的是......它起作用了。
∮疯狂的解决方案∮
我所做的就是c.logo = c.logo.replace('/mnt/', '');在渲染img时

<img src={require(`/mnt/${c.logo}`)} alt={c.title} />

令我非常惊讶和宽慰的是,这一切工作得非常好。

相关问题