节点包 'node-fetch' SyntaxError: Unexpected identifier

Posted

技术标签:

【中文标题】节点包 \'node-fetch\' SyntaxError: Unexpected identifier【英文标题】:Node package 'node-fetch' SyntaxError: Unexpected identifier节点包 'node-fetch' SyntaxError: Unexpected identifier 【发布时间】:2021-11-25 01:59:17 【问题描述】:

我有问题。我正在尝试使用以下命令运行我的 NodeJS 脚本:

node /var/script/NodeJS/test.js

但是当我运行它时,我得到以下错误:

/var/script/NodeJS/node_modules/node-fetch/src/index.js:9
import http from 'http';
       ^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/var/script/NodeJS/test.js:2:15)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)

我已经在终端中运行了以下命令:

cd /var/script/NodeJS
npm install
npm install http
npm install node-fetch

我运行节点版本:v10.19.0

这是我给出的错误代码:

const express = require("express");
const fetch = require('node-fetch');
const app = express();
const PORT = process.env.PORT = 8787;
let router = express.Router();

这只是导入,但这段代码已经给出了提供的错误! 我可以在 node_module 文件夹中看到这两个模块,那么为什么会出现此错误以及如何解决此问题?

【问题讨论】:

***.com/a/62554884/5781499 这能回答你的问题吗? Error: require() of ES modules is not supported when importing node-fetch 【参考方案1】:

将文件扩展名从.js重命名为.mjs

文件名必须是:test.mjs

import fetch from 'node-fetch';

const express = require("express");

const app = express();
let router = express.Router();


const PORT = process.env.PORT = 8787;

还要记住 node-fetch 对节点版本有要求:

https://github.com/node-fetch/node-fetch/blob/main/package.json#L14

  "engines": 
    "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
  ,

运行为:node test.mjs


奖励:如果您不喜欢使用 mjs 等,请尝试安装 node-fetch@2.6.5

npm i --save node-fetch@2.6.5

【讨论】:

这给了我同样的错误? @A.Vreeswijk 最好放你的代码和节点版本 对不起,我已经添加了 您的最新编辑仍然给我错误,我应该将节点升级到最新版本吗? @A.Vreeswijk 查看 node-fetch 在 12.20+、14.13.1+、16=+ 上受支持,请确保您在应该可以工作的版本上有错误

以上是关于节点包 'node-fetch' SyntaxError: Unexpected identifier的主要内容,如果未能解决你的问题,请参考以下文章

使用密钥获取 *** Royale 节点

如何使用 node-fetch 查看发送的标头?

不使用 node-fetch 调用的快速路由

有没有办法记录节点获取请求?

捕获块在节点获取中不起作用

从画布正确获取信息并通过带有 node-fetch 的 webhook 将信息发送到 discord 时出现问题