使用es6在NodeJs中导入JSON文件

时间:2019-12-19 13:41:45

标签: javascript node.js json

嗨,我目前正在学习nodejs,我尝试导入这样的json文件:

'use strict'

import data from 'users.json'

console.log(data)

每次出现此错误“找不到包'users.json'”

但是,如果我使用fs读取了文件,则该文件可以正常工作,所以请您说明一下如何操作

2 个答案:

答案 0 :(得分:1)

尝试:

import data from './users'

这是es6的处理方法,或者如果您想使用旧的语法方法,可以尝试

const data = require('./users')

好的,解释就是这样,这些句号和正斜杠用于指示要从中调用导入的文件的相对路径,这意味着您会看到类似../file/help之类的内容。 ./表示向上一个目录../表示向上两个目录,依此类推。斜线后的名称只是告诉您的程序该文件夹要进入以查找要从中导入的文件,因此./folder意味着上一个目录并进入该文件夹目录,依此类推。

几乎忘了提及,您不能从json文件,文本文件或任何其他没有.js扩展名的文件(实际上不必指定扩展名。)来处理节点中的文件使用fs库。

const fs =require('fs')

....

fs.readFile('./users.json','utf-8',(err,jsonString)=>{
        const data = JSON.parse(jsonString);
         //whatever other code you may fanacy
         }

看看fs模块,其中提供了一些很棒的功能,可用于播放文件

答案 1 :(得分:1)

虽然选择的答案是正确的,但我希望以下解释可以增加一些清晰度:

import MyModule from 'some-module'

是 ES6 导入语法,与旧的 CommonJS 语法相反,后者使用 require

CommonJS的require一般可以用来导入文件; ES6 的 import 语句更具体,一般用于导入符合模块条件的 js 文件(有 export 语句),或者 CSS 表等特定资源。与 require 不同,它通常无法读取非模块的文件。

你不能在同一个文件中混合 CommonJS require 和 ES6 import(至少不容易),所以如果你使用 ES6 import 并希望读取文件, 使用 fs.readFileSync 或类似方法执行此操作。如果文件是 json 字符串,则需要使用 JSON.parse() 对其进行解析。