Фон
У меня есть файл, которым мне нужно поделиться между двумя репозиториями. Файл содержит один-единственный объект.
- Repo A настроен на прием только файлов commonjs (
require("/path/to/file")
), и мне нелегко получить доступ к его конфигурациям babel. - Репо B использует стиль импорта ES6
import foo from "bar"
, и я могу поиграть с егоtsconfig.json
.
Я знаю, что если я использую modules.export = myObject
, он работает только для репо commonjs (репо A), а если я использую export = myObject
или export default myObject
, он работает только для репо ES6 (репо B).
Вопросов:
Можно ли заставить один и тот же файл работать в обеих системах? Я пробовал
export = modules.export = myObject
или любую другую комбинацию, но ничего не работает.Как мне импортировать версию commonjs в репозиторий ES6? Я попытался оставить это файл commonjs
modules.export = myObject
, но в репо B, когда я делаюimport foo from "path/to/file"
, он продолжает выкрикивать следующее сообщение. он уходит в тот момент, когда я меняю его наexport = myObject
, но тогда он не будет работать для Repo A.
File '/path/to/file.ts' is not a module.ts(2306)
Примечания
- Я обнаружил, что параметр
"esModuleInterop": true
в моемtsconfig.json
должен заставить его работать, но независимо от того, что я делаю (любое значение"module"
в tsconfig.json , включаюallowSyntheticDefaultImports
) не работает. У меня все та же ошибка2306
. - Как я уже упоминал в комментарии, можно считать, что файл содержит статический объект. (например,
{a: 5, b: 8};
)
tsconfig.json
Часть репо A, к которой я прикасаюсь, - это конфигурация файл для Quasar, и он на ванильном JS.
Репо B - это проект Typescript / Node, и соответствующая часть tsconfig.json в нем:
"compilerOptions": {
"baseUrl": ".",
"esModuleInterop": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"outDir": "dist",
"strict": true,
"sourceMap": true,
"target": "es6",
...
{ a: 5, b: 8}
. Итак,module.exports = { a: 5, b: 8 };
(весь файл представляет собой только эту строку) работает только для commonjs, аexport default { a: 5, b: 8};
- только для es6. - person Aidin   schedule 04.02.2021tsconfig.json
? - person Federkun   schedule 10.02.2021