"type": "module" in package.json throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath)
"type": "module" in package.json throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath)
我想在我的 nodejs 项目中使用导入而不是使用 require。
所以,我补充说,
"type": "module"
在我的package.json.
import index from './index.js';
在server.js
当我运行
node server.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
};
根据编辑前的堆栈跟踪 (https://whosebug.com/revisions/61558835/1):
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: H:\WORKSPACE\CMDs\node-basic\server.conf.js
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1174:13)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
code: 'ERR_REQUIRE_ESM'
}
我试图找到抛出此错误的节点源:
// Native extension for .js
Module._extensions['.js'] = function(module, filename) {
if (filename.endsWith('.js')) {
const pkg = readPackageScope(filename);
// Function require shouldn't be used in ES modules.
if (pkg && pkg.data && pkg.data.type === 'module') {
// ...
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
}
}
// ...
};
注释Function require shouldn't be used in ES modules
告诉要加载的js文件是一个ES模块,但调用者试图使用require()
函数加载它。
此外,仔细检查 Node src 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
即可修复。
有同样的问题。我安装了最新的节点版本,然后它就可以工作了。尝试相同。此外,如果您使用的是 windows,请确保它是正确的版本,即 64 位、32 位。
检查您的 NodeJS 版本的模块兼容性(“类型”:“模块”),某些版本存在已知问题。
很可能在您的 index.js/server.js 或您正在导入的依赖包或其他地方有一个 require('./server.conf.js') 。如果您发现它,只需将其更改为导入即可修复。
1- 检查你是否都需要语句
2- 分析该代码中 require 语句的依赖包
- 尝试构建...
- 尝试部署到 GC、DO、AWS 或 HKU 上的 NodeJS 容器
在我的例子中,我有一个数据文件 (data.js),其中的产品列为数组中的对象。看起来像这样:
const data={
products:[
{
brand:'nike',
price:1200
},
{
brand:'adidas',
price:1400
}
]
}
export default data
错误是因为我愚蠢地导出它就像它是一个函数或class
并写道:
export default data={
etc...
}
我怀疑这是你的错误的一个例子,但它仍然显示了这个错误是多么的麻烦和经常出现。如果它有任何清晰度,我想说的是,我基本上是说这通常是由于文件本身无法从导入中读取而出现的。如果你输入 "type": "module" 那么它就是 def 节点的一个版本,或者是你试图导入的东西的基本级别的问题。尝试一开始一个一个地删除每个导入,看看哪个可能是原因。然后从那里开始工作
不需要花哨的东西。只需更新 Node.js 版本。
对于我的情况,我降级:
节点获取 ^3.0.0 → ^2.6.1
问题已解决。
我也遇到了类似的问题。
所以我将 chalk 模块版本从 5.0.1 降级到 4.1.0。
它对我有用。
我想在我的 nodejs 项目中使用导入而不是使用 require。 所以,我补充说,
"type": "module"
在我的package.json.
import index from './index.js';
在server.js
当我运行
node server.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
};
根据编辑前的堆栈跟踪 (https://whosebug.com/revisions/61558835/1):
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: H:\WORKSPACE\CMDs\node-basic\server.conf.js
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1174:13)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at internal/main/run_main_module.js:18:47 {
code: 'ERR_REQUIRE_ESM'
}
我试图找到抛出此错误的节点源:
// Native extension for .js
Module._extensions['.js'] = function(module, filename) {
if (filename.endsWith('.js')) {
const pkg = readPackageScope(filename);
// Function require shouldn't be used in ES modules.
if (pkg && pkg.data && pkg.data.type === 'module') {
// ...
throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
}
}
// ...
};
注释Function require shouldn't be used in ES modules
告诉要加载的js文件是一个ES模块,但调用者试图使用require()
函数加载它。
此外,仔细检查 Node src 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
即可修复。
有同样的问题。我安装了最新的节点版本,然后它就可以工作了。尝试相同。此外,如果您使用的是 windows,请确保它是正确的版本,即 64 位、32 位。
检查您的 NodeJS 版本的模块兼容性(“类型”:“模块”),某些版本存在已知问题。
很可能在您的 index.js/server.js 或您正在导入的依赖包或其他地方有一个 require('./server.conf.js') 。如果您发现它,只需将其更改为导入即可修复。
1- 检查你是否都需要语句
2- 分析该代码中 require 语句的依赖包
- 尝试构建...
- 尝试部署到 GC、DO、AWS 或 HKU 上的 NodeJS 容器
在我的例子中,我有一个数据文件 (data.js),其中的产品列为数组中的对象。看起来像这样:
const data={
products:[
{
brand:'nike',
price:1200
},
{
brand:'adidas',
price:1400
}
]
}
export default data
错误是因为我愚蠢地导出它就像它是一个函数或class 并写道:
export default data={
etc...
}
我怀疑这是你的错误的一个例子,但它仍然显示了这个错误是多么的麻烦和经常出现。如果它有任何清晰度,我想说的是,我基本上是说这通常是由于文件本身无法从导入中读取而出现的。如果你输入 "type": "module" 那么它就是 def 节点的一个版本,或者是你试图导入的东西的基本级别的问题。尝试一开始一个一个地删除每个导入,看看哪个可能是原因。然后从那里开始工作
不需要花哨的东西。只需更新 Node.js 版本。
对于我的情况,我降级: 节点获取 ^3.0.0 → ^2.6.1
问题已解决。
我也遇到了类似的问题。 所以我将 chalk 模块版本从 5.0.1 降级到 4.1.0。 它对我有用。