繁体   English   中英

使用 es6 在 NodeJs 中导入 JSON 文件

[英]Import JSON file in NodeJs using es6

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

 'use strict' import data from 'users.json' console.log(data)

每次我收到这个错误“找不到包'users.json'”

但是,如果我使用 fs 读取文件,它会起作用,所以请您解释一下该怎么做

尝试 :

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模块以获取可用于处理文件的出色功能列表

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

import MyModule from 'some-module'

是 ES6 导入语法,而不是旧的 CommonJS 语法,后者使用require

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM