是否有一个简单的方法来加载json节点模块?



在你阅读我下面的冒险之前,我想找一个简单的在模块中加载json凭据的方法。我的冒险经历了很多步骤,所以我认为有更快的方法!

我尝试导入模块并加载json。我从一个要求开始:

import { default as fetch } from 'node-fetch';
import { GoogleSpreadsheet } from 'google-spreadsheet';
let creds = require('./credentials/sheets123456123456.json');

我得到这个错误

ReferenceError: require在ES模块作用域中没有定义,你可以使用该文件被视为ES模块,因为它有一个"。js"文件扩展名和'/用户/wimdenherder/文件/Programmeren/Nodejs/Sellvation/Programmeren/卖/package.json '包含"类型"模块"。要将其视为CommonJS脚本,请重命名它使用'。

我试图重写为Stefan Judis在这篇文章中提出的导入

import { default as fetch } from 'node-fetch';
// import { default as creds } from './credentials/sheets2569224e80ce5d0c2d.json';
import { GoogleSpreadsheet } from 'google-spreadsheet';
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const creds = require('./credentials/sheets123456123456.json');

但是tslint给出了一个错误:

"导入。只有当'——module'选项为'es2020'、'esnext'或'system'时,才允许使用Meta '元属性。ts(1343)

我必须更新tsconfig.json

"compilerOptions": {
"target": "es5",
"module": "esnext"

,但文件夹没有tsconfig。Json,所以我运行

tsc --init

但是具有讽刺意味的是,tslint在tsconfig中给出了一个错误。json文件!

配置文件中没有找到输入

所以我创建了一个空的.ts文件,并按照这里的建议重新启动visual code studio。
然后我再次运行脚本

node index.js

然后我得到这个错误

TypeError [ERR_UNKNOWN_FILE_EXTENSION]:未知文件扩展名"。json"为/用户/wimdenherder/文件/Programmeren/Nodejs/Sellvation/Programmeren/卖/凭证/sheets123456123456.json

我通过运行这篇文章 的提示来修复。

node --experimental-json-modules

,现在它工作了!

所以我的问题是,有没有一种更简单的方法来加载json到模块

在nodejs吗?PS:我还得到了这个打字错误

找不到模块'/credentials/sheets2569224e80ce5d0c2d.json'。考虑使用'——resolveJsonModule'来导入带有'。json的扩展。

我通过更新tslint解决了。配置和重新启动可视代码

"compilerOptions": {
"resolveJsonModule": true,

通过添加以下选项来更新您的tsconfig.json文件。

{
"compilerOptions": {
"esModuleInterop": true,
"resolveJsonModule": true
}
}

完成以上操作后,您将能够像下面这样导入json文件:

import credentials from "./credentials/sheets123456123456.json";
console.log(credentials);

最新更新