fs 与要求 JSON

fs vs require JSON

首先我会说我是 NodeJS 的新手,但我已经在 PHP 中开发了很多年(这并不意味着我知道多少)。

我最近开始摆弄 Node 并发现了一些奇怪的东西我希望有人可以帮助

我有一个文件调用 local.js,它会拉入一个 .JSON 文件,用于设置 oAuth keys 等。

我拉入这个文件的最初方式是这样的:

var fs = require('fs')
var settings = fs.readFileSync('./config/settings.json', 'utf8')

我发现我无法通过 settings.keysettings 中的 JSON 读取值,这会给我 undefined

正在测试下面的另一种方法

var settings = require('./config/settings.json')

允许我通过 settings.key

JSON 读取值

我想知道为什么会这样?

fs.readFileSync()只是读取文件中包含的数据,但不解析它。

为此,您需要一个额外的步骤:

var settings = JSON.parse( fs.readFileSync('./config/settings.json', 'utf8') );

使用require() 自动解析数据。

Require 将参数中提供的路径中的所有代码获取到您的变量中。在第一种情况下,require('fs') 实际上是 shorthand 类似 require('/some/path/fs.js')require.js 将代码存储在该路径(模块)中的变量中。该模块包含 readFileSync 方法,当然,它会将提供的文件的内容读入 settings。现在 require 与 JSON 一样工作,因为如果你 require 一个 JSON 文件,require.js 将解析它并将它加载到你的变量中,您可以像使用基本的 js 对象一样使用它。

函数fs.readFileSync()只读取文件内容作为字符串。

虽然 require() 将读取文件的内容并使用 JSON.parse() 函数对其进行解析,因此您将在 return.[=14 中获得一个 json 对象=]

如果您不在执行期间修改 json 文件,最好使用 require()