When I try to compile a .ts file I get the following error:
Module build failed: Error: Typescript emitted no output for C:\xampp\htdocs\node-api\src\js\server.ts.
at successLoader (C:\xampp\htdocs\node-api\node_modules\ts-loader\dist\index.js:39:15)
at Object.loader (C:\xampp\htdocs\node-api\node_modules\ts-loader\dist\index.js:21:12)
For compiling I use the following config files.
Webpack:
const path = require( 'path' ),
CleanWebpackPlugin = require( 'clean-webpack-plugin' );
module.exports = env => {
return {
mode: env.dev ? 'development' : 'production',
entry: {
'server': './src/js/server.ts'
},
output: {
path: __dirname,
filename: './dist/js/[name].js',
},
externals: '/node_modules',
module: {
rules: [
{
test: /\.js$/,
exclude: ['/node_modules/', '/src/scss/'],
use: [
'babel-loader'
]
},
{
test: /\.ts(x?)$/,
exclude: ['/node_modules/', '/src/scss/'],
use: [
'babel-loader',
'ts-loader',
]
},
{
test: /\.json$/,
loader: 'json-loader'
},
]
},
resolve: {
extensions: ['.ts', '.tsx', '.js' ],
alias: {
'@': path.resolve(__dirname, './src/js')
}
},
plugins: [
new CleanWebpackPlugin(['./dist/js', './dist/css']),
]
}
};
Typescript:
{
"compilerOptions": {
"removeComments": true,
"preserveConstEnums": true,
"allowJs": true,
"outDir": "./dist/js",
"target": "es5",
"moduleResolution": "node",
"module": "es2015",
"lib": [
"es2015",
"es2016"
]
},
"exclude": [
"node_modules"
]
}
Babel:
{
"presets": [
[
"env", {
"targets": {
"node": "current"
}
}
],
"stage-2", "es2015"
],
"plugins": ["dynamic-import-node"]
}
As suggested in some other questions I've already changed the order of resolve extensions but that didn't solve it (.js
before .ts
) . Typescript 2.8.3 is used in combination with Node 8.11.1 and Mongoose 5.0.15 and compiled by Webpack 4.6. So I'm still wondering how to to solve the error mentioned above.
Please set noEmit
to false
in your tsconfig.json
.
By default it sets to true
, once we change it to false
we may not get this error.
"noEmit": false
Override compilerOptions
like this in webpack config (when using ts-loader
):
rules: [
{
test: /\.[jt]s$/,
exclude: /(node_modules)/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
{
loader: 'ts-loader',
options: {
compilerOptions: {
noEmit: false,
},
},
},
],
},
]
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