Как лучше всего настроить tsconfig. json для работы с node.js модулями? - PullRequest
0 голосов
/ 01 мая 2020

Пока у меня есть 2 файла в "./src": index.ts и setConfig.ts. И импортируйте 'fs' и 'path' следующим образом:

const fs = require('fs');
const path = require('path');

... и это то, что Typescript явно не любит; при компиляции он говорит:

src/index.ts:1:7 - error TS2451: Cannot redeclare block-scoped variable 'fs'.

1 const fs = require('fs');
        ~~

  src/setConfig.ts:1:7
    1 const fs = require('fs');
            ~~
    'fs' was also declared here.

src/index.ts:2:7 - error TS2451: Cannot redeclare block-scoped variable 'path'.

2 const path = require('path');
        ~~~~

  src/setConfig.ts:2:7
    2 const path = require('path');
            ~~~~
    'path' was also declared here.

src/setConfig.ts:1:7 - error TS2451: Cannot redeclare block-scoped variable 'fs'.

1 const fs = require('fs');
        ~~

  src/index.ts:1:7
    1 const fs = require('fs');
            ~~
    'fs' was also declared here.

src/setConfig.ts:2:7 - error TS2451: Cannot redeclare block-scoped variable 'path'.

2 const path = require('path');
        ~~~~

  src/index.ts:2:7
    2 const path = require('path');
            ~~~~
    'path' was also declared here.


Found 4 errors.

Но когда я опускаю его в setConfig.ts узел жалуется, что не знает 'fs' ....

Мой tsconfig.json выглядит как это:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "outDir": "./dist/",
    "rootDir": "./src/", 
    "strict": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  }
}

Итак, что еще мне нужно добавить или сделать, чтобы мой скомпилированный JavaScript работал правильно?

1 Ответ

1 голос
/ 01 мая 2020

Добавление экспорта в ваш модуль setConfig.ts должно решить проблему.

// setConfig.ts
export default {
  // your exports
};
// Or
export function foo() {}
...