在你阅读我下面的冒险之前,我想找一个简单的在模块中加载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);