【发布时间】:2017-05-20 14:38:31
【问题描述】:
我已经构建了我的第一个完整的 React 应用程序,它运行良好。我加载了我的开发服务器,一切都完全按照我的希望加载。值得注意的是,我的图像文件可以完美加载。
在我的开发服务器上成功加载图像的示例:
<img src='./img/sq/filename.jpg' />
当运行 dev server 时,当我在控制台中检查这个元素并转到“Sources”时,我看到的文件树是这样的:
- localhost:3333
- css [folder]
- js [folder]
- img/sq [folder]
- filename.jpg
- index [file]
正如我所料。
但是,当运行 生产服务器 时,图像无法加载。当我检查元素并转到“来源”时,我看到的是:
- localhost:3000
- static [folder]
- css [folder]
- js [folder]
- index [file]
所以我的生产版本显然完全忽略了/img/sq 文件夹。
我听说过 file-loader 和 url-loader,但我还没有找到关于它们的作用以及如何使用它们的清晰简单的解释。我已经成功安装到我的依赖项中,并且我已经将此加载程序添加到我的 webpack.config.js 文件中:
{
test: /\.(jpe?g|png|gif|svg)$/i,
loaders: [
'file?hash=sha512&digest=hex&name=[hash].[ext]',
'image-webpack?bypassOnDebug&optimizationLevel=7&interlaced=false'
]
}
完成此操作后,我不确定这应该如何改变图像加载方式。我应该更改引用图像的方式吗?任何帮助/指针将不胜感激,因为这让我很难过。
更新:
这是我的 server.js 文件。除了我使用res.render 方法和你的res.sendFile 之外,我看不出你发布的代码和我自己的代码有什么根本区别。
这里有什么我可能错过的吗?
server.js
var express = require('express')
var app = express();
app.use('/static', express.static(__dirname + '/static'));
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.get('*', function (req, res) {
res.render("index");
});
const port = process.env.PORT || 3000;
const env = process.env.NODE_ENV || 'production';
app.listen(port, err => {
if (err) {
return console.error(err);
}
console.info(`Server running on http://localhost:${port} [${env}]`);
});
【问题讨论】:
-
这更像是一个 node.js 服务器问题(没有反应)。您可以查看此“替换现有服务器端视图解决方案”github.com/reactjs/express-react-views
-
请注意,您使用的是 ejs 视图引擎,而我的服务器没有。我还建议您查看“create-react-app”github.com/facebookincubator/create-react-app/blob/master/… 的部署部分
标签: image reactjs webpack loader webpack-file-loader