Naf*_*Joy 6 import node.js package.json
我想在我的 nodejs 项目中使用 import 而不是使用 require。所以,我补充说,
"type": "module"
Run Code Online (Sandbox Code Playgroud)
在我的package.json 中。
import index from './index.js';
Run Code Online (Sandbox Code Playgroud)
在server.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: ....
Run Code Online (Sandbox Code Playgroud)
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
};
Run Code Online (Sandbox Code Playgroud)
根据编辑之前的堆栈跟踪(https://stackoverflow.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'
}
Run Code Online (Sandbox Code Playgroud)
我试图找到抛出此错误的 Node src:
// 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);
}
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
注释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您的应用程序,但没有运气。require('./server.conf.js')很可能在您index.js或其他地方有一个。如果你发现它,只需将其更改为import修复即可。
| 归档时间: |
|
| 查看次数: |
7724 次 |
| 最近记录: |