节点包 '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的主要内容,如果未能解决你的问题,请参考以下文章