readFileSync 不是函数

Posted

技术标签:

【中文标题】readFileSync 不是函数【英文标题】:readFileSync is not a function 【发布时间】:2016-09-21 23:00:24 【问题描述】:

我对 Node.js 比较陌生,一直在四处寻找,但找不到解决方案。我确实检查了需要的 javascript 文件,它似乎没有“readFileSync”的方法。也许我没有合适的要求文件?我很难找到这个文件,到处都在谈论它,但大多数人没有发布从哪里得到它。

我安装了 Node.js 并拥有 require.js 文件。我现在的代码是这样的:

fs = require(['require'], function (foo) 
//foo is now loaded.
);
console.log("\n *STARTING* \n");
// Get content from file
var contents = fs.readFileSync("sliderImages", 'utf8');

一开始我有点需要 require 工作,但它似乎加载了 require JavaScript 文件。我一直在关注指南,但不确定为什么会出现此错误:

未捕获的类型错误:fs.

我尝试了很多修复,但似乎无法解决这个问题。

【问题讨论】:

fs 显然不是 Node 的“fs”,否则 readFileSync 方法不会是未定义的,所以你的要求有问题吗?你为什么不直接做var fs = require('fs') 不要在 Node.js 中使用 Require.js。 Node 有自己的使用 CommonJS 处理模块的方式。正如adeneo所说,只需var fs = require('fs')。 Require.js 用于在客户端加载模块。 当我尝试使用它时,出现以下错误:尚未为上下文加载模块名称“fs”:_。使用要求([])。所以我开始寻找解决方案。 你在 node 中使用 requirejs 有什么原因吗?如果有,你要导入吗? fs 没有文件,它是一个始终存在的内置模块 【参考方案1】:

Node.js 不使用Require.js。 Require.js 的构建是为了让您可以在客户端(在您的浏览器中)加载异步模块。

Node.js 使用CommonJS 样式模块。您使用 CommonJS 的代码如下所示:

var fs = require('fs');
console.log("\n *STARTING* \n");
var contents = fs.readFileSync("sliderImages", "utf8");

如果我们假设您将其保存在名为 main.js 的文件中,那么您将在控制台中输入此命令(确保您与文件位于同一目录中):

node main.js

此代码不会在浏览器中运行。 Node.js 在服务器上运行。如果要在浏览器端加载 JSON 文件,则需要使用 AJAX 加载它。 There are numerous resources 可向您展示如何执行此操作。请注意,您必须从服务器运行页面或启用特殊标志才能从文件系统加载文件。

【讨论】:

谢谢 我有点不确定如何使用node.js,明白了很多,谢谢! 在我看来RequireJS支持Node?:requirejs.org/docs/node.html @kip2 RequireJS 确实可以在 Node 环境中工作,但 Node 默认不支持 RequireJS 样式模块。 Node 以自己的方式处理模块。没有理由在 Node 中使用 RequireJS,尤其是自从构建 RequireJS 以来,客户端捆绑已经发展了很多 嗨@MikeCluck,我的情况并不完全像OP。我正在尝试通过执行 import config from './config/env_config' 在应该运行浏览器/客户端的脚本中使用节点模块,但遇到了这个 FileSystem.readFileSync is not a function 错误。 env_config 实际上只是我用来管理环境配置值的 node-config 的包装器

以上是关于readFileSync 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将使用 fs.readFileSync() 的 Node.js 代码重构为使用 fs.readFile()?

[Node.js] Read a File in Node.js with fs.readFile and fs.readFileSync

如何为 fs.readFileSync() 捕获没有文件?

fs.readFileSync 不是 Meteor 的函数,React

readFileSync 不是函数

nj10---文件读取