0

are there any ways to lint or otherwise debug a types file?

I have a index.d.ts file of all my types, but it seems to crash my app at startup.

using tsc with some basic options works fine using tslint works fine. but when running with the webpack compiler I get the following error.

the file contents are a lot but basically like the below. I had some issues with exporting enums before but basically not getting any actual errors I can understand.

// we SEND to Boto
export enum MsgTypeOut {
  TEXT = 0,
  IMAGE = 1,
  URL_LINK = 2,
  FILE = 3,
}

export interface BotoTextMsg {
  chatId: string
  messageType: MsgTypeOut.TEXT
  token?: string
  payload: {
    text: string
  }
}
  nodemon:watch early exit on watch, still watching (1) +14s
/Users/dc/dev/tix/recobot/stack/backend/server.js:2663
throw new Error("Module build failed: Error: Typescript emitted no output for /Users/dc/dev/tix/recobot/stack/shared/typezoo/index.d.ts.\n    at successLoader (/Users/dc/dev/tix/recobot/stack/backend/node_modules/ts-loader/dist/index.js:47:15)\n    at Object.loader (/Users/dc/dev/tix/recobot/stack/backend/node_modules/ts-loader/dist/index.js:29:12)");
^

Error: Module build failed: Error: Typescript emitted no output for /Users/dc/dev/tix/recobot/stack/shared/typezoo/index.d.ts.
    at successLoader (/Users/dc/dev/tix/recobot/stack/backend/node_modules/ts-loader/dist/index.js:47:15)
    at Object.loader (/Users/dc/dev/tix/recobot/stack/backend/node_modules/ts-loader/dist/index.js:29:12)
    at Object.__awaiter (/Users/dc/dev/tix/recobot/stack/backend/server.js:2663:7)
    at __webpack_require__ (/Users/dc/dev/tix/recobot/stack/backend/server.js:20:30)
    at Object.defineProperty.value (/Users/dc/dev/tix/recobot/stack/backend/server.js:2551:19)
    at __webpack_require__ (/Users/dc/dev/tix/recobot/stack/backend/server.js:20:30)
    at Object.__awaiter (/Users/dc/dev/tix/recobot/stack/backend/server.js:867:16)
    at __webpack_require__ (/Users/dc/dev/tix/recobot/stack/backend/server.js:20:30)
    at Object.<anonymous> (/Users/dc/dev/tix/recobot/stack/backend/server.js:1306:18)
    at Object.<anonymous> (/Users/dc/dev/tix/recobot/stack/backend/server.js:1343:30)
    at __webpack_require__ (/Users/dc/dev/tix/recobot/stack/backend/server.js:20:30)
    at Object.__awaiter (/Users/dc/dev/tix/recobot/stack/backend/server.js:1028:15)
    at __webpack_require__ (/Users/dc/dev/tix/recobot/stack/backend/server.js:20:30)
    at Object.defineProperty.value (/Users/dc/dev/tix/recobot/stack/backend/server.js:63:18)
    at Object.<anonymous> (/Users/dc/dev/tix/recobot/stack/backend/server.js:66:10)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
[nodemon] app crashed - waiting for file changes before starting...

webpack config is pretty much vanilla based on create-react-app.

const fs = require("fs")
// const path = require("path")
const NodemonPlugin = require("nodemon-webpack-plugin");

const nodeModules = {};
fs.readdirSync("node_modules")
  .filter(function (x) {
    return [".bin"].indexOf(x) === -1;
  })
  .forEach(function (mod) {
    nodeModules[mod] = "commonjs " + mod;
  });

module.exports = {
  entry: "./server/server.ts",
  output: {
    filename: "server.js",
    // path: path.join(__dirname, "/build"),
  },

  externals: nodeModules,

  // needed to fix https://github.com/webpack/webpack/issues/1599
  node: {
    __dirname: true
  },

  module: {
    loaders: [
      {
        loader: "ts-loader",
        test: /\.tsx?$/,
      },
    ],
  },
  plugins: [new NodemonPlugin()],
  resolve: {
    extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"],
  },
  target: "node",
};

dcsan
  • 11,333
  • 15
  • 77
  • 118

1 Answers1

0

For anyone watching, the error is related to importing enums.

You can export an enum from a types.d.ts file... but it won't import and blows up in this weird way.

https://lukasbehal.com/2017-05-22-enums-in-declaration-files/

How to refer to Typescript enum in d.ts file, when using AMD?

Olivia Stork
  • 4,660
  • 5
  • 27
  • 40
dcsan
  • 11,333
  • 15
  • 77
  • 118