0

Я пытаюсь создать промежуточное ПО Redux с помощью TypeScript. Эта функцияОшибка TypeScript «Невозможно прочитать свойство« экспорт »неопределенного»

import { Middleware } from "redux" 

function createMiddleware() { 
    return ({ dispatch, getState }) => next => action => { 
    if (Math.random() > 0.5) { 
     return next(action) 
    } 

    return next(action) 
    } 
} 

export const middleware: Middleware = createMiddleware() 

выдает ошибку Машинопись:

Typescript error: Cannot read property 'exports' of undefined 

Хотя компилятор не жалуется, когда я удаляю если-блок.

Мой tsconfig.json

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "target": "ES5", 
    "noImplicitAny": false, 
    "skipLibCheck": true, 
    "noUnusedLocals": true, 
    "noUnusedParameters": true, 
    "jsx": "react", 
    "lib": ["dom", "es2015", "es2016"], 
    "baseUrl": "../src", 
    "exclude": [ 
     "node_modules" 
    ] 
    } 
} 

EDIT StackTrace из браузера консоли

Uncaught Error: Module build failed: TypeError: Cannot read property 'exports' of undefined 
    at resolveName (..\node_modules\typescript\lib\typescript.js:24948:70) 
    at getResolvedSymbol (..\node_modules\typescript\lib\typescript.js:32549:67) 
    at checkIdentifier (..\node_modules\typescript\lib\typescript.js:33700:26) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38185:28) 
    at checkExpression (..\node_modules\typescript\lib\typescript.js:38165:42) 
    at checkNonNullExpression (..\node_modules\typescript\lib\typescript.js:35540:24) 
    at checkPropertyAccessExpressionOrQualifiedName (..\node_modules\typescript\lib\typescript.js:35587:24) 
    at checkPropertyAccessExpression (..\node_modules\typescript\lib\typescript.js:35554:20) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38208:28) 
    at checkExpression (..\node_modules\typescript\lib\typescript.js:38165:42) 
    at checkNonNullExpression (..\node_modules\typescript\lib\typescript.js:35540:24) 
    at resolveCallExpression (..\node_modules\typescript\lib\typescript.js:36556:28) 
    at resolveSignature (..\node_modules\typescript\lib\typescript.js:36786:28) 
    at getResolvedSignature (..\node_modules\typescript\lib\typescript.js:36809:26) 
    at checkCallExpression (..\node_modules\typescript\lib\typescript.js:36836:29) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38213:28) 
    at resolveName (..\node_modules\typescript\lib\typescript.js:24948:70) 
    at getResolvedSymbol (..\node_modules\typescript\lib\typescript.js:32549:67) 
    at checkIdentifier (..\node_modules\typescript\lib\typescript.js:33700:26) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38185:28) 
    at checkExpression (..\node_modules\typescript\lib\typescript.js:38165:42) 
    at checkNonNullExpression (..\node_modules\typescript\lib\typescript.js:35540:24) 
    at checkPropertyAccessExpressionOrQualifiedName (..\node_modules\typescript\lib\typescript.js:35587:24) 
    at checkPropertyAccessExpression (..\node_modules\typescript\lib\typescript.js:35554:20) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38208:28) 
    at checkExpression (..\node_modules\typescript\lib\typescript.js:38165:42) 
    at checkNonNullExpression (..\node_modules\typescript\lib\typescript.js:35540:24) 
    at resolveCallExpression (..\node_modules\typescript\lib\typescript.js:36556:28) 
    at resolveSignature (..\node_modules\typescript\lib\typescript.js:36786:28) 
    at getResolvedSignature (..\node_modules\typescript\lib\typescript.js:36809:26) 
    at checkCallExpression (..\node_modules\typescript\lib\typescript.js:36836:29) 
    at checkExpressionWorker (..\node_modules\typescript\lib\typescript.js:38213:28) 
    at Object../src/store/middleware.ts (http://localhost:8080/static/js/main.js:69038:7) 
    at __webpack_require__ (http://localhost:8080/static/js/main.js:660:30) 
+0

Вы запускаете свой код в nodejs или в браузере? Afaik 'commonjs' - это модульная система nodejs. – Martin

+0

В браузере. Я использую Webpack 2.2.0-rc с awesome-typescript-loader 3.0.0-beta (такая же ошибка с 2.1.4 и ts-loader). Я не могу использовать параметр '' module ":" ES6 "' из-за ошибки-ответчика. – dw9

+0

Знаете ли вы, действительно ли webpack и/или awesome-ts-loader поддерживают загрузку модулей commonjs в браузере? Поскольку «экспорт» - это объект, который должен быть предоставлен загрузчиком модуля, и согласно ошибке вы получаете этот объект, по-видимому, несовместим. – Martin

ответ

0

Благодаря Мартину, я понял, что это было на самом деле вопрос Webpack 2. Переключение на Webpack 1 решило это для меня.

Смежные вопросы