我开始说我是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
读取值
我很奇怪为什么会这样?
答案 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对象。