2017-06-05 2 views
1

Ich habe ein Problem beim Laden von rxjs in ein einfaches Webpack-Setup (ohne Winkel). Ich renne:kann nicht aufgelöst Modul 'rxjs' in typescript/webpack nicht gefunden

./node_modules/.bin/webpack --config webpack.config.js --watch 

Webpack starten. Die einzige Datei mit der App, src/app.ts, beginnt mit:

import { Observable } from 'rxjs'; 

und dieser Linie wird in VSCode und in webpack Konsole mit diesem Fehler hervorgehoben:

Cannot find module 'rxjs'. 

Aber die Gesamtleistung funktioniert gut. Nur dieser Konsolenfehler.

tsconfig.json:

{ 
    "compilerOptions": { 
     "target": "es2015" 
    }, 
    "files": [ 
     "src/app.ts" 
    ] 
} 

webpack.config.js:

module.exports = { 
    entry: "./src/app.ts", 
    output: { 
     filename: "dist/bundle.js" 
    }, 
    resolve: { 
     // Add '.ts' and '.tsx' as a resolvable extension. 
     extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"] 
    }, 
    module: { 
     loaders: [ 
      // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader' 
      { test: /\.ts?$/, loader: "ts-loader" } 
     ] 
    } 
} 

package.json (alles richtig installiert ist):

{ 
    "scripts": { 
    "start": "./node_modules/.bin/webpack --config webpack.config.js --watch" 
    }, 
    "devDependencies": { 
    "ts-loader": "^2.1.0", 
    "typescript": "^2.3.4", 
    "webpack": "^2.6.1", 
    "webpack-dev-server": "^2.4.5" 
    }, 
    "dependencies": { 
    "bootstrap": "^3.3.7", 
    "rxjs": "^5.4.0" 
    } 
} 

ich den Grund nicht finden können, warum nicht auch ts/webpack resolve wo ist rxjs

Antwort

0

Sie müssen node_modules auf Ihre webpack resolve.modules Config hinzu:

resolve: { 
    modules: [ 
     "node_modules", 
     path.resolve(__dirname, "app") 
    ], 
    extensions: [".js", ".json", ".jsx", ".css"], 
} 

Weitere Informationen über https://webpack.js.org/configuration/resolve/

+0

dies nicht viel Sinn für mich macht; Die [docs] (https://webpack.js.org/configuration/resolve/#resolve-modules) sagen, dass 'resolve.modules' standardmäßig' 'node_modules' 'heißt, also muss ich es nicht hinzufügen, ich ändere es einfach nicht. Und ich muss dort "app" nicht hinzufügen, denn warum? – ducin

3

Sie sollten Standardmodul Lösungsstrategie von Klassik bis Knoten ändern. Um dies zu tun, Ihre tsconfig.json Datei ändern:

{ 
    ... 
    "compilerOptions": { 
     .... 
     "moduleResolution": "node" 
    } 
} 

siehe Dokumentation auf Module Resolution

+1

Nun, ich weiß nichts über OP, aber du hast mir einige Stunden gerettet: D Danke! – Jed

+0

Es funktionierte für mich mit '" module ":" commonjs "' und aktualisierte VSCode auf die neueste Version. Aber wenn es jemandem geholfen hat - es ist gut :) – ducin

+0

@ducin ja commonjs wird standardmäßig im Knoten verwendet. Deshalb hat es auch für dich funktioniert –

Verwandte Themen