fs vs需要JSON

时间:2016-05-31 09:31:47

标签: node.js fs

我开始说我是NodeJS的新手,但我已经用PHP开发了很多年(我知道并不多)。

我最近开始修补Node并发现一些奇怪的东西我希望有人可以提供帮助

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

我提取此文件的初始方式如下:

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

我发现,我无法通过JSON settings通过settings.key读取值undefined

测试下面的另一种方法

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

允许我通过JSON

settings.key读取值

我很奇怪为什么会这样?

3 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:1)

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

虽然require()将读取文件的内容并使用JSON.parse()函数解析它,因此您将获得一个json对象作为回报。

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

答案 2 :(得分:0)

<?php // Change it to real $_POST $POST = [ 'var1' => '10', 'var2' => '20', ]; extract($POST, EXTR_SKIP); $myString = 'return (35 * $var1 * 64) / $var2;'; echo eval($myString); 将参数中提供的路径中的所有代码都放入变量中。在第一种情况下,Require实际上是require('fs')require('/some/path/fs.js')之类的简写,将代码存储在变量内的路径(模块)中。该模块包含require.js方法,当然,该方法将提供的文件的内容读入readFileSync。现在settings和JSON的效果一样,如果你require是一个JSON文件,require将解析它并将其加载到你的变量中,你可以像使用它一样使用它基本的js对象。