I have these dependencies:
"devDependencies": {   "@types/node": "^4.0.27-alpha",   "babel-core": "^6.10.4",   "babel-loader": "^6.2.4",   "babel-polyfill": "^6.9.1",   "babel-preset-es2015": "^6.9.0",   "babel-preset-stage-0": "^6.5.0",   "ts-loader": "^0.8.2",   "typescript": "^2.0.0",   "webpack": "^1.13.1" }   .babelrc
{   "presets": [     "es2015",     "stage-0"   ] }   tsconfig.json
{     "compilerOptions": {         "module": "commonjs",         "target": "es6",         "noImplicitAny": false,         "sourceMap": false,         "outDir": "built"     },     "exclude": [         "node_modules"     ] }   webpack.config.js
module.exports = {   entry: ['babel-polyfill', './src/'],   output: {     path: __dirname,     filename: './built/bundle.js',   },   resolve: {     modulesDirectories: ['node_modules'],     extensions: ['', '.js', '.ts'],   },   module: {     loaders: [{       test: /\.tsx?$/, loaders: ['ts-loader', 'babel-loader'], exclude: /node_modules/     }],   } };   /src/index.ts
async function foo() {   const value = await bar();   console.log(value); }  function bar() {   return new Promise((resolve, reject) => {     return resolve(4);   }); }  (async function run() {   await foo(); }());   With this setup it does work, I can build and run it (logs 4 correctly). However I'm always getting some errors on webpack:
ERROR in ./src/index.ts (4,32): error TS2304: Cannot find name 'regeneratorRuntime'.  ERROR in ./src/index.ts (6,12): error TS2304: Cannot find name 'regeneratorRuntime'.  ERROR in ./src/index.ts (31,451): error TS2346: Supplied parameters do not match any signature of call target.  ERROR in ./src/index.ts (40,33): error TS2304: Cannot find name 'regeneratorRuntime'.  ERROR in ./src/index.ts (41,12): error TS2304: Cannot find name 'regeneratorRuntime'.   It seems it has something to do with babel-polyfill.
What am I missing?
As a work-around, we can use babel-loader to compile TypeScript.
As of Babel 7 the ts-loader is unnecessary, because Babel 7 understands TypeScript. Complete details of a TypeScript + Babel7 + Webpack setup are here.
Install Babel's TypeScript support. Only @babel/preset-typescript is mandatory; the other three add additional features that TypeScript supports.
npm install --save-dev @babel/preset-typescript  npm install --save-dev @babel/preset-env  npm install --save-dev @babel/plugin-proposal-class-properties  npm install --save-dev @babel/plugin-proposal-object-rest-spread   Configure the additional .babelrc plugins and presets.
{     "presets": [         "@babel/preset-env",         "@babel/preset-typescript"     ],     "plugins": [         "@babel/proposal-class-properties",         "@babel/proposal-object-rest-spread"     ] }   And update your webpack.config.js (other code is omitted for clarity).
module: {   rules: [   {      test: /\.(js|jsx|tsx|ts)$/,      exclude: /node_modules/,      loader: 'babel-loader'     }   ] }, resolve: {   extensions: ['*', '.js', '.jsx', '.tsx', '.ts'], }, 
                        Loaders always execute right to left, so changing to
test: /\.tsx?$/, loaders: ['babel-loader', 'ts-loader'], exclude: /node_modules/   Fixed the issue since it is going to run ts-loader first.
Full webpack.config.js file
module.exports = {   entry: ['babel-polyfill', './src/'],   output: {     path: __dirname,     filename: './dist/index.js',   },   resolve: {     extensions: ['', '.js', '.ts'],   },   module: {     loaders: [{       test: /\.ts$/, loaders: ['babel-loader', 'ts-loader'], exclude: /node_modules/     }],   } };   Sample project brunolm/typescript-babel-webpack
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With