javascript - TS2304: 'require' adını bulamıyor


Webpack (özellikle awesome-typescript-loader) aşağıdaki hata nedeniyle uygulamayı derlemeyi başaramıyor:

ERROR in [at-loader] ./src/app/app.ts:6:13
   TS2304: Cannot find name 'require'.

İlgili kod:

@Component({
  name: 'App',
  template: require('./app.template.pug') <---
})
export class AppComponent extends Vue {

}

Burada tam olarak aynı hatayı tarif eden benzer bir soru var ve cevaplarda belirtilen çeşitli çözümleri denedim, ancak hiçbiri başarılı olmadı:

1. Türler package.json dosyasına yüklenir

"devDependencies": {
  " @types/node": "^7.0.22"
  ...

2. awesome-typescript-loader benim tsconfig.json dosyamın farkında:

loader: 'awesome-typescript-loader',
options: {
  configFileName: 'tsconfig.json',
  useCache: config.build.useCaching
}

3. Types ve type roots tsconfig.json içinde beyan edilmiştir

"typeRoots": [
  "node_modules/@types"
],
"types": [
  "node",
  "webpack"
],

4. Özel tip tanımlarım node için tanımları içerir

declare module '*';
declare var require: any

Başka denemem gereken bir şey var mı?

Cevap #1

Bunu yeni bir webpack.d.ts ekleyip içine aşağıdaki içeriği ekleyerek çözdüm..

        declare var require: (filename: string) => any;