【发布时间】:2016-04-04 18:48:33
【问题描述】:
在我的应用程序中,我使用 Node.js、React 和 Express。我想从光盘上的目录中加载图片。 假设我要加载的文件位于 //localhost:3000/images/own/
(当我输入 ex. //localhost:3000/images/own/my_pic.jpg 浏览器返回某些图片)
我以前是用ajax调用来做的:
$.ajax({
url: '/images/own',
dataType: 'text',
success: function (data){
//some actions here
}
});
但现在我收到 404 错误 'GET http://localhost:3000/images/own/ 404 (Not Found)'。
我知道使用 node 加载文件通常是使用 fs 完成的,但是由于我的脚本是用 babel 编写的(在 React 中需要),所以我不能使用 require('fs')。我找到了可以使用的https://github.com/OptimalBits/fs.js(通过将其包含在我的html文件中),但是在示例中使用它时:
FSFactory(1024*1024, 'images/own', function(err, fs){
if(err){
console.log(err);
}
fs.readdir('/', function(err, entries){
if(err)
console.log(err);
console.log(entries);
});
});
fs 对象为空,readdir 返回空表。
我应该以不同的方式提供目录路径还是有其他方式来加载文件?我对节点很陌生,所以任何帮助都将不胜感激。
【问题讨论】:
-
为什么在使用 Babel 的时候不能使用
fs?此外,它看起来好像您正在尝试将前端代码 (React) 与后端代码 (Express、fs) 混合在一起,并且不知道一个停止而另一个继续。 -
我猜 babel 中存在一些错误,它无法识别单词 'require'(我得到 ReferenceError: require is not defined)- 它的唯一工作方式是包含带有链接的脚本标签项目。我在划分 React 和 fs 时可能会遇到一些问题。我的意思是我的网站提供了一个图片库(前端由 React 完成),但其中的图片必须以某种方式加载,我认为 fs 是正确的使用方法。所有剩余的后端代码(如应用配置、路由)都放在单独的 .js 文件中。
标签: javascript node.js express babeljs fs