我想在我的nodejs项目中使用import而不是require。所以,我添加了,
"type": "module"
在我package.json中。
import index from './index.js';
在服务器.js中
当我跑步时
- 节点服务器.js*
错误提示:
internal/modules/cjs/loader.js:1174
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
^
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
^
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: ....
server.conf.js已粘贴到下面。
import express from 'express';
import http from 'http';
let app = express();
let server = http.createServer(app);
import morgan from 'morgan';
import methodOverride from 'method-override';;
import path from 'path';
let port = process.env.PORT || 4000;
app.use(morgan('dev'));
app.use(methodOverride('X-HTTP-Method-Override'));
let router = express.Router();
import routes from '../app/routes';
routes(app, router, client);
server.listen(port);
console.log(`Wizardry is afoot on port ${port}`);
export {
app,
client
};
9条答案
按热度按时间g52tjvyc1#
对于我的情况,我降级:节点提取^3.0.0 → ^2.6.1
问题解决了。
h43kikqp2#
根据编辑前的stack-trace(https://stackoverflow.com/revisions/61558835/1):
我试图找到抛出此错误的Node src:
https://github.com/nodejs/node/blob/c24b74a7abec0848484671771d250cfd961f128e/lib/internal/modules/cjs/loader.js#L1234
注解
Function require shouldn't be used in ES modules
告诉要加载的js文件是ES模块,但调用者试图使用require()
函数加载它。此外,对Node src www.example.com的双重检查https://github.com/nodejs/node/blob/6cc94b2d7f69f1f541f7c5de3cb86e569fbd4aa3/lib/internal/errors.js#L1319证明
H:\WORKSPACE\CMDs\node-basic\server.conf.js
是要加载的ES模块。所以我试着猜测是谁试图在你的应用程序中加载
server.conf.js
,但没有成功。很可能是在你的index.js
或其他地方有一个require('./server.conf.js')
。如果你发现了它,就把它改成import
来修复。blpfk2vs3#
有同样的问题。我安装了最新的节点版本,然后它工作了。尝试同样的。此外,如果你使用的是windows,请确保它是正确的版本,iidee 64位,32位。
doinxwow4#
在我的例子中,我有一个数据文件(data.js),其中的产品被列为数组中的对象。看起来像这样:
错误是因为我愚蠢地导出它,就像它是一个函数或类,并写道:
我怀疑这是你的错误的情况下,但它仍然显示了如何繁琐,经常这个错误可以显示出来。如果它的任何清晰度什么我想说的我基本上是说,这通常会显示由于文件本身是不可读的导入。如果你把“类型”:“module”,则它是定义了节点的版本,或者是您试图导入的某个基本级别的问题。尝试一开始就逐个删除每个导入,以查看哪个可能是原因。然后从那里开始工作
mjqavswn5#
不需要什么花哨的东西。只需更新Node.js版本。
csbfibhn6#
检查您的NodeJS版本是否与模块兼容(“type”:“module”),某些版本存在已知问题。
很可能在index.js/server.js或您要导入的依赖包中或其他地方存在require('./server.conf.js')。如果您发现它,只需将其更改为import即可修复。
1-检查您是否都需要语句
2-分析代码中require语句相关包
qxsslcnc7#
我也面临着类似的问题。所以我降级粉笔模块版本从5.0.1到4.1.0。它为我工作。
x0fgdtte8#
在我的例子中,我运行的是Angular 13.X和Nx 14.X,但我的节点版本仍然是12.X,所以将节点版本升级到^14可以解决这个问题。
xu3bshqb9#
我更新了终端节点版本为16,删除了node_modules并重新安装。