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