尝试调用 readFileSync(( 后,我在 Chrome 调试器中得到一个"fs.readFileSync 不是函数";
我称之为...
const fs = require('fs');
调用函数...
let content = fs.readFileSync('/path/to/my/file.stuff');
并尝试显示内容。
console.log(content);
我一无所获。当我这样做时...
console.log(fs);
我似乎得到了一个通用的javascript对象... 我完全被困住了。
流星版本:1.5.1 npm 版本:3.10.10 节点版本:v6.10.1
感谢您的所有答案!
我已经确认您不能在客户端使用 fs。
相反,我制作了另一个本地简单的快速节点 api,而 react Web 应用程序只是向节点 api 发出请求以获取该数据。
另外,你必须这样做...
https://enable-cors.org/server_expressjs.html
编辑:
很久以前写过这个。 3年前,当我刚刚开始学习Web开发时。只是想更新并说用户看到的和服务器看到的之间存在严重的根本差异。允许前端(Meteor,React,Angular等(读取文件将是一个超级严重的安全问题。任何人都可以制作一个网站,当用户访问它时,它只会读取您的本地计算机文件。不好。。。
虽然现在这对我来说非常明显,但在 3 年前并不明显。所以对于你们所有的新手来说,没关系:)没有问题是一个愚蠢的问题。
调用 readFileSync(( 后,我在 Chrome 调试器中得到一个"fs.readFileSync 不是一个函数";
fs
在浏览器中不起作用。这是设计使然,旨在保护您的文件系统免受潜在的安全威胁。
在浏览器环境中使用低级节点包
如果您需要在浏览器环境中访问它,请考虑使用 Electron,它允许您在正在运行的 Chromium 实例中使用操作系统级别的 NodeJS 包。
fs
不能在客户端上使用,因为浏览器限制了某些 JavaScript 代码。
如果代码同时在服务器和客户端上运行,则可以使用:
if (Meteor.isClient) return;
以避免错误。否则,应该有另一种方法可以完成您尝试完成的任务,例如import
所需的 JSON。