2017-07-06 1 views
1

J'essaie d'importer index.ts dans un sous-dossier qui a d'autres importations. Mais je continue à recevoir une erreur typographique.L'importation de typecript index.ts n'est pas un module

complet repo: https://github.com/Shavindra/webpack-react-sw

(5,32): error TS2306: File 'C:/../src/reducers/index.ts' is not a module.

Je ne suis pas tout à fait sûr de ce que je fais mal ici. J'utilise TS 2.4.1. J'ai essayé de redémarrer l'ordinateur/VSCode mais rien ne semble fonctionner: - |

// ./src/reducers/counter.reducer.ts  
export const counterReducer = (state = 0, action) => { 
    switch (action.type) { 
    case 'INCREMENT': 
     return state + 1; 
    case 'DECREMENT': 
     return state - 1; 
    default: 
     return state; 
    } 
}; 


// ./src/reducers/index.ts 
export * from './counter.reducer'; 


// ./src/app.ts 
import * as React from 'react'; 
import * as React from 'react'; 
import * as ReactDOM from 'react-dom'; 
import { createStore } from 'redux'; 
import { Counter } from './components/counter/counter.component'; 
import { counterReducer } from './reducers'; 


const store = createStore(counterReducer); 
const rootEl = document.getElementById('root'); 

const render =() => ReactDOM.render(
    <Counter 
     value={store.getState()} 
     onIncrement={() => store.dispatch({ type: 'INCREMENT' })} 
     onDecrement={() => store.dispatch({ type: 'DECREMENT' })} 
    />, 
    rootEl 
); 

render(); 
store.subscribe(render); 

// tsconfig.json 

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "target": "es5", 
    "sourceMap": true, 
    "jsx":"react", 
    "lib": [ 
     "webworker", 
     "es6", 
     "scripthost", 
     "dom" 
    ] 
    }, 
    "files": [ "node_modules/@types/react-dom/index.d.ts", "node_modules/@types/react/index.d.ts", "typings/file-loader.d.ts" ], 
    "exclude": [ 
    "typings/browser.d.ts", 
    "typings/browser", 
    "node_modules" 
    ] 
} 
+0

Je ne vois pas où vous avez importé .... de 'index'; Peut-être duplication possible de https://stackoverflow.com/questions/32805559/typescript-es6-import-module-file-is-not-a-module-error – Digvijay

+0

@Digvijay c'est dans l'app.ts? – MonteCristo

Répondre

0

Quelques idées sont:

    Réducteurs
  • est un dossier et tsc tente de rechercher des réducteurs ./reducers/index.ts
  • est un fichier et n'est pas lisible par tsc
  • recuders est un fichier valide mais possède un système d'exportation différent. vérifier UMD, systemjs, CommonJS comprend

Vous pouvez les inclure via: import counterReducer = require('./recuders'); import * as counterReducer from './recuders';

Si vous souhaitez inclure un seul module via import { mod } from 'file'; Assurez-vous que vous exportez cette fonction, classe ou tout ce que vous voulez dans les réducteurs .ts

J'espère que ces idées ont aidé. faites le moi savoir!

Pouvez-vous s'il vous plaît poster votre tsconfig.json pour vous assurer que tout est correctement configuré?

+0

J'ai ajouté le tsconfig – MonteCristo

+0

si vous regardez le très haut const est déjà exporté – MonteCristo

+0

J'ai essayé de configurer vos fichiers sur mon espace de travail et je n'ai trouvé aucune erreur dans les fichiers .ts. Après avoir enlevé le tableau 'files' de tsconfig, et j'ai essayé de tsc le' app.ts' tout fonctionne bien. Avez-vous besoin d'ajouter un rootDir à tsconfig pour vous assurer que le tsc trouve tous les fichiers? – Wartoshika