2017-01-21 13 views
5

Próbuję podzielić kod Webpack 2.Właściwość "zapewnienia" nie istnieje dla typu "NodeRequire"

Według tego dokumentu: https://webpack.js.org/guides/code-splitting-require/

następujący kod powinien zawierać some.css do nowego kawałka o nazwie „coś”

require.ensure([], function(require) { 
    require('some.css'); 
}, 'something'); 

ale kiedy go uruchomić, dostaję ten błąd:

ERROR in ./src/index.ts 
(4,9): error TS2339: Property 'ensure' does not exist on type 'NodeRequire'. 

Każdy pomysł, jak to naprawić? Dzięki

+2

Mam ten sam problem. Znalazłeś rozwiązanie? – hook38

Odpowiedz

0

Wymagałem dokumentu javascript, który następnie wymagał. Niezupełnie najpiękniejszy rozwiązanie, ale to nie działa

1

The way I rozwiązać ten był tworząc własne interfejs - WebpackRequire - która rozciąga NodeRequire z ensure .

interface WebpackRequire extends NodeRequire { 
    ensure(
    dependencies: string[], 
    callback: (require: WebpackRequire) => void, 
    errorCallback?: (error: Error) => void, 
    chunkName?: string 
): void; 
}; 

Jeśli masz tylko jedno wystąpienie require.ensure można następnie wpisz rzucić go do WebpackRequire wykorzystaniem (require as WebpackRequire).ensure, ale ponieważ użyłem go kilka razy w module, stworzyłem lokalnej require w górnym zakresie modułu typu cast jako WebpackRequire, tak:

const require: WebpackRequire = (window as any).require; 

mam rodzaje ensure z Webpack docs