nodejs代码,node-fetch升级到3/4系列后,该如何使用?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
截至到发稿,node-fetch
已经升级4系列,但是都是测试版。node-fetch@3
系列已经做了较大的改变,引入方式已经发生了较大变化。如果还使用原来的require
方式进行加载的话,就会报错。
大家好,这里是苏南大叔的程序如此灵动博客,这里讲述苏南大叔和计算机代码的故事。本文描述在nodejs
代码中,使用node-fetch@3
的方式。测试环境:win10
,node@16.14.2
,node-fetch@3.2.8
。
前情回顾
在前面的文章里面,测试环境是node-fetch@2
系列。引入方式是:
const fetch = require('node-fetch');
参考文章:
但是,node-fetch
升级后,无法这样使用。报错信息如下:
require() of ES Module C:\Users\sunan\node_modules\node-fetch\src\index.js from C:\Users\sunan\Desktop\fetch\test.js not supported.
Instead change the require of index.js in C:\Users\sunan\Desktop\fetch\test.js to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (C:\Users\sunan\Desktop\fetch\test.js:2:15) {
code: [32m'ERR_REQUIRE_ESM'[39m
}
解决方案
nodejs
引入模块的方式,有两种。一个是commonjs
,另外一种是module
。
版本号 | 使用方式 | 代码 |
---|---|---|
node-fetch@2 | commonjs | const fetch = require('node-fetch'); |
node-fetch@3 | module | import fetch from 'node-fetch'; |
所以,对于node-fetch@3
系列。正确的使用方式是:
首先,需要开启module
模式,开启的方式有两种,这里选择最简单的方式,使用.mjs
文件。更多开启方式,请参考:
其次,修改node-fetch
模块的引入方式,参考代码如下:
import fetch from 'node-fetch';
console.log(typeof fetch);
输出内容:
function
更多使用方式
剩下的代码使用方式,和原来的差不多。参考测试代码如下:
import fetch from 'node-fetch';
console.log(typeof fetch);
fetch("https://api.github.com/users/github")
.then(function(response) {
console.log("01");
return response.json(); // return到第二个then里面
})
.then(function(data) {
console.log("02");
console.log(data);
})
.catch(function(e) {
console.log("Oops, error");
});
更多测试代码,请参考:
查看可以版本
可以使用下面的方法,查看可用的版本。相关文章:
npm view node-fetch versions --json
相关文章
综述
说了半天,其实真相很简单。就是node-fetch@3
是需要使用module
方式的import
导入的。同时,需要开启nodejs
的module
支持,大概就是这个意思。更多node
的相关文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。