Skip to content

Maximum call stack size exceeded at [email protected] and @next #28785

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
duvet86 opened this issue Dec 1, 2018 · 7 comments
Closed

Maximum call stack size exceeded at [email protected] and @next #28785

duvet86 opened this issue Dec 1, 2018 · 7 comments
Assignees
Labels
Bug A bug in TypeScript Crash For flagging bugs which are compiler or service crashes or unclean exits, rather than bad output

Comments

@duvet86
Copy link

duvet86 commented Dec 1, 2018

After installing typescript 3.2.1 I'm getting this error:

D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:86983
                throw e;
                ^

RangeError: Maximum call stack size exceeded
    at isSelfReferenceLocation (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32168:41)
    at resolveNameHelper (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32074:21)
    at resolveName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:31829:20)
    at resolveEntityName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32680:26)
    at resolveTypeReferenceName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38485:20)
    at getTypeFromTypeReference (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38670:30)
    at getTypeFromTypeNode (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:40178:28)
    at getConstraintFromTypeParameter (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38328:72)
    at fillMissingTypeArguments (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:37877:49)
    at getTypeFromClassOrInterfaceReference (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38429:78)
error Command failed with exit code 1.

I also tried with typescript@next getting the following:

D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:87007
                throw e;
                ^

RangeError: Maximum call stack size exceeded
    at isSelfReferenceLocation (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32191:41)
    at resolveNameHelper (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32097:21)
    at resolveName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:31853:20)
    at resolveEntityName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:32703:26)
    at resolveTypeReferenceName (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38508:20)
    at getTypeFromTypeReference (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38693:30)
    at getTypeFromTypeNode (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:40201:28)
    at getConstraintFromTypeParameter (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38351:72)
    at fillMissingTypeArguments (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:37900:49)
    at getTypeFromClassOrInterfaceReference (D:\git\workbench-ts\node_modules\typescript\lib\typescript.js:38452:78)
error Command failed with exit code 1.

Related Issues:
I found similar issues:
#16533
#15926

But I am confident I'm not doing any circular reference.
The solution was compiling successfully before upgrading to [email protected]

My tsconfig.json:

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */,
    "module": "esnext" /* Specify module code generation: 'none', commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
    "lib": [
      "es2017",
      "dom"
    ] /* Specify library files to be included in the compilation:  */,
    "allowJs": false /* Allow javascript files to be compiled. */,
    "jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */,
    "sourceMap": true /* Generates corresponding '.map' file. */,
    "outDir": "./public/" /* Redirect output structure to the directory. */,

    /* Strict Type-Checking Options */
    "strict": true /* Enable all strict type checking options. Enabling --strict enables --noImplicitAny, --noImplicitThis, --alwaysStrict, --strictNullChecks, --strictFunctionTypes and --strictPropertyInitialization */,               /* Parse in strict mode and emit "use strict" for each source file. */

    /* Additional Checks */
    "noUnusedLocals": false /* Report errors on unused locals. */,
    "noUnusedParameters": false /* Report errors on unused parameters. */,
    "noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
    "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */,

    /* Module Resolution Options */
    "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */,
    "baseUrl": "./src" /* Base directory to resolve non-absolute module names. */,
    "esModuleInterop": true /*Emit __importStar and __importDefault helpers for runtime babel ecosystem compatibility and enable --allowSyntheticDefaultImports for typesystem compatibility.*/,
    "allowSyntheticDefaultImports": true /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

My package.json:

{
  "name": "react-typescript",
  "version": "1.0.0",
  "description": "",
  "scripts": {
    "build": "webpack --config webpack.config.prod.js && node copyPublicFolder",
    "start": "webpack-dev-server --config webpack.config.dev.js",
    "lint": "tslint --project tsconfig.json --format stylish",
    "test": "jest --colors"
  },
  "author": "luca",
  "license": "ISC",
  "devDependencies": {
    "@types/base-64": "^0.1.2",
    "@types/classnames": "^2.2.6",
    "@types/echarts": "^4.1.3",
    "@types/history": "^4.7.2",
    "@types/jest": "^23.3.10",
    "@types/node-fetch": "^2.1.4",
    "@types/react": "^16.7.11",
    "@types/react-dom": "^16.0.11",
    "@types/react-grid-layout": "^0.16.5",
    "@types/react-redux": "^6.0.10",
    "@types/react-router": "^4.4.1",
    "@types/react-router-dom": "^4.3.1",
    "@types/react-select": "^2.0.10",
    "@types/react-test-renderer": "^16.0.3",
    "@types/react-window": "^1.1.0",
    "@types/webpack-env": "^1.13.6",
    "clean-webpack-plugin": "^1.0.0",
    "css-loader": "^1.0.1",
    "dotenv-webpack": "^1.5.7",
    "duplicate-package-checker-webpack-plugin": "^3.0.0",
    "file-loader": "^2.0.0",
    "fork-ts-checker-webpack-plugin": "^0.5.0",
    "fs-extra": "^7.0.1",
    "html-webpack-plugin": "^4.0.0-beta.3",
    "jest": "^23.6.0",
    "jest-pnp-resolver": "^1.0.2",
    "jest-resolve": "^23.6.0",
    "mini-css-extract-plugin": "^0.4.5",
    "node-fetch": "^2.3.0",
    "optimize-css-assets-webpack-plugin": "^5.0.1",
    "pnp-webpack-plugin": "^1.2.1",
    "postcss-flexbugs-fixes": "^4.1.0",
    "postcss-js": "^2.0.0",
    "postcss-loader": "^3.0.0",
    "postcss-preset-env": "^6.4.0",
    "postcss-safe-parser": "^4.0.1",
    "react-test-renderer": "^16.6.3",
    "redux-devtools-extension": "^2.13.7",
    "style-loader": "^0.23.1",
    "terser-webpack-plugin": "^1.1.0",
    "ts-jest": "^23.10.5",
    "ts-loader": "^5.3.1",
    "tsconfig-paths-webpack-plugin": "^3.2.0",
    "tslint": "^5.11.0",
    "tslint-loader": "^3.6.0",
    "tslint-react": "^3.6.0",
    "typescript": "^3.2.1",
    "url-loader": "^1.1.2",
    "webpack": "^4.26.1",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.1.10",
    "webpack-manifest-plugin": "^2.0.4",
    "workbox-webpack-plugin": "^3.6.3"
  },
  "dependencies": {
    "@material-ui/core": "^3.6.0",
    "@material-ui/icons": "^3.0.1",
    "base-64": "^0.1.0",
    "classnames": "^2.2.6",
    "echarts": "^4.2.0-rc.2",
    "echarts-for-react": "^2.0.15-beta.0",
    "history": "^4.7.2",
    "immutability-helper": "^2.8.1",
    "normalizr": "^3.3.0",
    "react": "^16.6.3",
    "react-dom": "^16.6.3",
    "react-grid-layout": "^0.16.6",
    "react-redux": "^5.1.1",
    "react-router": "^4.3.1",
    "react-router-dom": "^4.3.1",
    "react-select": "^2.1.2",
    "react-window": "^1.2.4",
    "redux": "^4.0.1",
    "redux-observable": "^1.0.0",
    "reselect": "^4.0.0",
    "rxjs": "^6.3.3",
    "storm-react-diagrams": "^5.2.1",
    "typeface-roboto": "^0.0.54"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
@AnyhowStep
Copy link
Contributor

AnyhowStep commented Dec 2, 2018

Is your code really "heavy" on generics?

[EDIT]

I ask because I have projects with a lot of.. Err.. Complex generic types and they failed when I tried to upgrade. I took that as an opportunity to rewrite the projects, though.

@dashmug
Copy link

dashmug commented Dec 3, 2018

I'm getting this as well for a project that is heavy on generic types.

@duvet86
Copy link
Author

duvet86 commented Dec 3, 2018

After a thorough investigation I found that it is one of my dependencies that's causing the issue.
I just reported an issue on the github repo.
projectstorm/react-diagrams#307

If the issue reported here is not relevant it can be closed.
Thank you.

@weswigham weswigham added Bug A bug in TypeScript Crash For flagging bugs which are compiler or service crashes or unclean exits, rather than bad output labels Dec 4, 2018
@duvet86
Copy link
Author

duvet86 commented Dec 7, 2018

Is it possible that extending and adding the same generic default causes the crash?

export class BaseWidget<P extends BaseWidgetProps = BaseWidgetProps, S = any> extends React.Component<P, S> {
  // Beautiful code...
}

I'm taking about this: P extends BaseWidgetProps = BaseWidgetProps

@nevir
Copy link

nevir commented Feb 11, 2019

I haven't been able to build a small reproduction yet, but lodash typings definitely seem to be a large contributor (~4.14.90+). Removing them works around the stack out for us—but it only occurs in some of our more complicated projects

@RyanCavanaugh
Copy link
Member

@sandersn we at least need a root cause here before 3.4 goes out

@sandersn
Copy link
Member

This is fixed in 3.3.3333.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug A bug in TypeScript Crash For flagging bugs which are compiler or service crashes or unclean exits, rather than bad output
Projects
None yet
Development

No branches or pull requests

7 participants