当我试图编译一个.ts文件时,我得到了以下错误:
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)对于编译,我使用以下配置文件。
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']),
]
}
};打字:
{
"compilerOptions": {
"removeComments": true,
"preserveConstEnums": true,
"allowJs": true,
"outDir": "./dist/js",
"target": "es5",
"moduleResolution": "node",
"module": "es2015",
"lib": [
"es2015",
"es2016"
]
},
"exclude": [
"node_modules"
]
}巴别塔:
{
"presets": [
[
"env", {
"targets": {
"node": "current"
}
}
],
"stage-2", "es2015"
],
"plugins": ["dynamic-import-node"]
}正如在其他一些问题中所建议的那样,我已经更改了resolve扩展的顺序,但这并没有解决它(在.ts之前使用.js)。Typescript 2.8.3与Node 8.11.1和Mongoose 5.0.15结合使用,由Webpack 4.6编译。所以我仍然想知道如何解决上面提到的错误。
发布于 2020-08-06 14:01:02
请在您的tsconfig.json中将noEmit设置为false。默认情况下,它设置为true,一旦我们将其更改为false,我们可能就不会得到这个错误。
"noEmit": false
发布于 2021-05-31 19:46:49
在webpack配置中(使用ts-loader时)像这样覆盖compilerOptions:
rules: [
{
test: /\.[jt]s$/,
exclude: /(node_modules)/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
{
loader: 'ts-loader',
options: {
compilerOptions: {
noEmit: false,
},
},
},
],
},
]发布于 2022-01-19 16:21:58
使用webpack 5和Typescript 4.5,我可以使用以下内容运行expressjs + prisma服务器:
webpack.config.js:
const path = require('path');
module.exports = {
entry: './src/index.ts',
module: {
rules: [
{
test: /\.tsx?$/,
use: [
{
loader: 'ts-loader',
options: {
compilerOptions: {noEmit: false},
}
}
],
exclude: /node_modules/,
},
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
};tsconfig.json:
{
"compilerOptions": {
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "CommonJS",
"moduleResolution": "node",
"resolveJsonModule": true,
"jsx": "preserve",
"incremental": true
},
"include": [
"**/*.ts"
],
"exclude": [
"node_modules"
]
}https://stackoverflow.com/questions/49969071
复制相似问题