У меня есть этот код, который должен нормально работать:
import express from "express";
import nunjucks from "nunjucks";
import fetch from "node-fetch";
const app = express();
app.use(express.static("public"));
nunjucks.configure("views", {
autoescape: true,
express: app,
});
app.set("view engine", "njk");
app.get("/", (req, response) => {
fetch("https://swapi.dev/api/")
.then((response) => response.json())
.then((data) =>
console.info(data)
// response.render("home", { categories: data }
)
});
app.listen(3000, () => {
console.info("Server started on http://localhost:3000");
});
но когда я пытаюсь запустить его с помощью ts-node src/index.ts
, у меня возникает эта ошибка:
Error [ERR_REQUIRE_ESM]: require() of ES Module /mnt/c/Users/me/Desktop/CODE/sw-api/node_modules/node-fetch/src/index.js from /mnt/c/Users/me/Desktop/CODE/sw-api/src/index.ts not supported.
Instead change the require of index.js in /mnt/c/Users/me/Desktop/CODE/sw-api/src/index.ts to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (/mnt/c/Users/me/Desktop/CODE/sw-api/src/index.ts:9:36)
at Module.m._compile (/mnt/c/Users/me/Desktop/CODE/sw-api/node_modules/ts-node/dist/index.js:735:29)
at Object.require.extensions.<computed> [as .ts] (/mnt/c/Users/me/Desktop/CODE/sw-api/node_modules/ts-node/dist/index.js:737:16)
at main (/mnt/c/Users/me/Desktop/CODE/sw-api/node_modules/ts-node/dist/bin.js:238:16)
at Object.<anonymous> (/mnt/c/Users/me/Desktop/CODE/sw-api/node_modules/ts-node/dist/bin.js:351:5) {
code: 'ERR_REQUIRE_ESM'
}
Я не совсем понимаю, потому что я не использую require() для импорта своих модулей
Кто-нибудь может мне помочь? Спасибо
Если нет, попробуйте обновить package.json
с помощью "type": "module"
. Также взгляните на следующее: Ошибка: require() модулей ES не поддерживается при импорте node-fetch и Ошибка [ERR_REQUIRE_ESM]: require() модуля ES не поддерживается.
Ваша конфигурация сборки TypeScript может генерировать модули CJS с
require()
, а не модули EJS сimport
. Вот и надо проверить. Вы также можете посмотреть на сгенерированный исходный код Javascript, который на самом деле выполняется, и вы, вероятно, увидите в немrequire()
.