接下来JS除了将图片放在public文件夹中之外,如何动态导入图片?

Ben*_*Ben 10 javascript markdown node.js next.js

我正在制作一个教科书网站,其中作者每个人都贡献一个教科书文件夹,其中包含一个 markdown 文件夹和一个图像文件夹:

\n
textbooks\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80textbook-1\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80images\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80markdown-files\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80textbook-2\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80images\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80markdown-files\n
Run Code Online (Sandbox Code Playgroud)\n

我将教科书文件夹存储在项目根文件夹中,并使用 \'fs\' 在构建时读取文件。到目前为止,我必须手动将图像文件夹放入公共文件夹中,以便在 Markdown 页面中使用它们。有没有办法动态导入这些图像文件而不将它们放入公共文件夹中?

\n

我正在使用 ReactMarkdown 来渲染 markdown,我正在考虑类似的事情:

\n
textbooks\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80textbook-1\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80images\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80markdown-files\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80textbook-2\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80images\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80markdown-files\n
Run Code Online (Sandbox Code Playgroud)\n

但它不起作用......

\n

dar*_*ode -4

您需要导入图像,就像使用Image来自 的组件导入其他模块一样next/image下面是来自 nextjs 文档next/image的示例

import Image from 'next/image'
import profilePic from '../public/me.png'

function Home() {
  return (
    <>
      <h1>My Homepage</h1>
      <Image src={profilePic} alt="Picture of the author" />
      <p>Welcome to my homepage!</p>
    </>
  )
}

export default Home
Run Code Online (Sandbox Code Playgroud)

  • 使用“require”而不是导入。 (2认同)
  • 我尝试使用“require”,但现在我遇到了另一个奇怪的行为。如果我使用 `require(\`../../textbooks/textbook-1/images/${imgFile}\`)` ,那么效果很好。但是,我引入了另一个动态段,例如 `require(\`../../textbooks/${textbookName}/images/${imgFile}\`)`,这会破坏代码,并且出现模块无法运行的错误成立。这可能是 webpack 配置问题吗? (2认同)