【发布时间】:2018-03-18 20:31:35
【问题描述】:
我应该通过导入相对路径还是通过引用文件 URL 在节点中加载照片,以及如何正确地从相对路径加载照片?
目前我正在使用 express 提供静态文件:
server.use(express.static(__dirname + '/../public'));
并通过引用文件 URL 来加载照片:
<img src='/images/tom.jpg'/>
我有一个 webpack 配置设置为在 (png|jpg|gif) 上使用文件加载器,并且 webpack 文档说,使用文件加载器,您可以从相对路径 (https://webpack.js.org/loaders/file-loader/#src/components/Sidebar/Sidebar.jsx) 导入照片:
import img from './file.png'
使用此配置(这是我正在使用的配置):
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {}
}
]
}
]
}
}
但是,当我尝试从其相对路径导入图像时:
//import
import img from '../../public/images/tom.jpg';
//render
<img src={img}/>
我收到此错误:
/Users/ryan/Desktop/Df/Coding/ryanchacon.io/node_modules/babel-core/lib/transformation/file/index.js:590 抛出错误; ^
语法错误: /Users/ryan/Desktop/Df/Coding/ryanchacon.io/public/images/tom.jpg: 意外字符 '�' (1:0)
1 | ����
但是,如果我发出“从相对路径导入”,启动我的服务器,然后将相对导入添加回来,图像将从其相对路径加载。但是,如果我重新启动服务器,则会再次引发错误。
因此,我改为引用文件 URL 来解决此错误,但我不确定如何使用我的 webpack/node 配置从它们的相对路径正确加载文件。
目前,我正在运行 node v8.6.0、webpack v3.6.0、express v4.15.4、file-loader v1.1.5 和 react v16.0.0。
【问题讨论】:
-
您的服务器运行状况如何?意思是,你在运行捆绑代码吗?提醒:Node.js 本身不知道如何导入图像文件(或任何其他非 JS 文件)。
-
是的,我正在使用 webpack 将代码捆绑到 /bundle.js 中,并将其放入 html 中的脚本标记中。我根据我的应用程序用于测试文件加载器的依赖项创建了一个最低限度的项目。这模仿了我的设置并产生相同的错误:github.com/Always-Sunny/bare-minimum/tree/fileloader
-
所以问题是,你的 node.js 服务器甚至得到 jpg 导入语句的场景是什么,因为它是客户端代码
-
通过快递;使用它来渲染一个模板引擎(ejs),它通过根 id 对钩子做出反应。还使用它通过公共文件夹提供静态文件
标签: node.js reactjs express webpack webpack-file-loader