모듈 빌드 실패:오류: 다음에 대한 출력이 없는 형식 스크립트입니다.
.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)
컴파일을 위해 다음 구성 파일을 사용합니다.
웹 팩:
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"]
}
다른 질문에서 제안한 것처럼 확장 해결 순서를 이미 변경했지만 해결되지 않았습니다(.js
전에.ts
). Typescript 2.8.3은 Node 8.11.1 및 Mongoose 5.0.15와 함께 사용되며 Webpack 4.6에 의해 컴파일됩니다. 그래서 위에서 언급한 오류를 어떻게 해결해야 할지 여전히 궁금합니다.
설정하십시오.noEmit
로.false
당신의tsconfig.json
기본적으로 다음으로 설정됩니다.true
로 변경하면false
이 오류가 발생하지 않을 수 있습니다.
"noEmit": false
재정의compilerOptions
웹 팩 구성에서 이와 같이(사용할 때)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,
},
},
},
],
},
]
웹 팩 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://webpack.js.org/guides/typescript/
제 경우에는 제가 제거해야 했습니다."emitDeclarationOnly": true
에서tsconfig.json
(또는 다음으로 설정)false
)
이 스위치를 켜면 출력만 됩니다.d.ts
JavaScript 파일이 아닌 파일입니다.
자세히 보기: https://www.typescriptlang.org/tsconfig#emitDeclarationOnly
언급URL : https://stackoverflow.com/questions/49969071/module-build-failed-error-typescript-emitted-no-output-for
'programing' 카테고리의 다른 글
오류 코드: 1054:테이블이 있는 경우 '필드 목록'에서 'table_name.column_name' 열을 알 수 없음 (0) | 2023.07.08 |
---|---|
오류: 'babel-register' 모듈을 찾을 수 없습니다. (0) | 2023.07.08 |
다른 SQL Server에 연결하기 위한 T-SQL 구문은 무엇입니까? (0) | 2023.07.08 |
15분 전과 동일한 날짜 시간을 만드는 방법은 무엇입니까? (0) | 2023.07.08 |
IIS7에서 eTag 헤더를 제거하려면 어떻게 해야 합니까? (0) | 2023.07.03 |