我有一个在Next.js页面中使用的React组件:
/页/索引.js
import React from 'react';
import ReactDOM from 'react-dom';
import Layout from "../src/hoc/Layout/Layout";
import Main from "../src/components/Main/Main";
const Index = () => (
<Layout>
<Main />
</Layout>
);
export default Index
在Main.js中,我有以下代码
import macbookIphone from '../../assets/images/mac-iphone.jpg';
我收到以下错误
模块剖析失败:意外的字符“�”(1:0)您可能需要适当的加载程序来处理此文件类型,当前没有配置加载程序来处理此文件。请参阅https://webpack.js.org/concepts#loaders(此二进制文件的源代码已省略)
我尝试执行以下操作
在下一个配置js中
const withImages = require('next-images')
module.exports = withImages()
我仍然收到相同的错误。
我做错了什么?
8条答案
按热度按时间fslejnso1#
/public/favicon/mail.png
=〉“/favicon/mail.png”将可以正常工作
7vhp5slm2#
请参见https://nextjs.org/docs/basic-features/static-file-serving
Next.js可以提供静态文件,比如图像,在根目录下的public文件夹下,然后你的代码可以从基本URL(/)开始引用public中的文件。
9q78igpj3#
从Next.jsv11开始,您可以在不进行任何额外配置的情况下完成您正在做的事情:
参考:
next/image
对于早期版本,如果您希望导入图像而不是将其放在公共目录中,则可以配置
file-loader
或url-loader
。t3psigkw4#
至少在我们的项目中,我们使用require for images而不是import。我们的下一个配置看起来和你的很相似。
请尝试以下操作,看看是否有帮助:
然后,您可以使用图像作为src,如下所示:
q3qa4bjr5#
在Next.js中使用图像有点不同:
所有静态资源(如图像)都必须放在
public
目录中。<app-name>/src/pages , <app-name>/src/components, ...
,则您的公用文件夹必须在src目录之外。公用文件夹不能在src下作为<app-name>/src/public.
在这种情况下,您的公用目录必须在<app-name>/public
下。<app-name>/pages, <app-name>/components, ...
,那么您的public目录应该在<app-name>/public
下排序后,直接引用
next/image
提供的<Image />
组件中的文件,如下所示:或
前提是您在 * public/sample-image.png * 下有一个文件
如果您有图像URL,请直接将其提供给“src”属性。
有关布局的描述性示例,请访问:https://github.com/vercel/next.js/tree/canary/examples/image-component
参考文献:
ryoqjall6#
可以使用
next-images
导入图像步骤1
npm install --save next-images
或
yarn add next-images
步骤2
用于打印脚本
重新启动服务器,现在您可以导入图像,如
import img1 from "assets/images/cover_images/blog_1.png"
https://github.com/twopluszero/next-images
kdfy810k7#
它对我来说是这样的,但是把文件放到公共文件夹中:
i7uq4tfw8#
您无法像在React.js中一样访问Next.js中图像,除非它们存储在'public'文件夹中