выходе файлы без именений, тк бекенд, в целом не нуждаюсь в совместимости
Ранее делал всегда через module.exports и писал просто js файлы, но решил попробовать import/export из es6 после реакта
Как итог, после компиляции в js файлы и попытки запуска получаю от ноды ошибку
Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '/proj/dist/somefolder' is not supported resolving ES modules imported from /proj/dist/app.js
Вызвана она способом импорта файлов
Прописываю import * from "./src"
Предполагая, что файл index.js из этой папки автоматически подцепится
*Файл index - сборщик всего что уровнем ниже, то есть содержит
export * from "./dirname1";
export * from "./dirname2";
и тд
Однако нода вики сообщает:
import a directory URL is unsupported. Instead, self-reference a package using its name and define a custom subpath in the "exports" field of the package.json file.
import './'; // unsupported
import './index.js'; // supported
import 'package-name'; // supported
Возникает вопрос как быть в такой ситуации:
Как то настроить компилятор, чтобы изменился способ подгрузки модулей?
Прописывать в ts файлах пути до индекс файлов "./dirname1/index.js"?
Как-то сообщить ноде искать index файл по умолчанию?
Честно пытался играть с настройками tsconfig но ничего не вышло. (Пробуя первый вариант)
На данный момент вот такие:
{
"compilerOptions": {
"strict": true,
"target": "ES2020",
"moduleResolution": "Node",
"resolveJsonModule": true,
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true, //"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"baseUrl": ".",
"outDir": "dist",
"rootDir": "./src",
"pretty": true
},
"include": ["src/**/*"]
}
Заранее спасибо
забей, просто делай relative imports и забей на всё
Я 2 дня пытался найти как сделать так чтобы оно работало и не получилось.
Что имеется ввиду под relative imports? Разве "./src" или "../../src" это не оно? У меня проблемка не в том что я полностью путь хардкожу до файла а в том что нода не ищет index.js при таком вот импорте
Та ты путь к файлу или к диру даешь ?
чтобы дир работал тебе нужно внутри дира иметь index.ts
"module": "CommonJS",
не думаю что така можно middle.loader
Аналогичная история, опускаем расширение и реакт компиллер искал .js по умолчанию :(
там вебпак есть
{ "extends": "../../tsconfig.json", "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "rootDir": "src", "outDir": "dist", "declaration": true, "esModuleInterop": true, "strict": true, "allowSyntheticDefaultImports": false }, "include": ["src"], "exclude": ["node_modules"] }
а что за конфиг оно тут наследует? extends": "../../tsconfig.json",
Щас скину
{ "compilerOptions": { "sourceMap": true, "removeComments": true, "strict": true, "noImplicitAny": true, "strictNullChecks": true, "strictFunctionTypes": true, "noImplicitThis": true, "alwaysStrict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "skipLibCheck": true } }
"module": "commonjs", "moduleResolution": "node",| вот эта часть вроде важно
ты кстатии не так вроде импортируешь
Обсуждают сегодня