Cannot read property protocol of undefined nodejs, webpack, typescript

Par ritelg, il y a 8 ans


Javascript NodeJS

Salut tous le monde,

J'ai une erreur avec nodejs, je precise que j'utilise webpack et typescript.

En effectuant des recherche j'ai vu que le problème venait de la requête

Mon erreur :

/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:5186 var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '' ^ TypeError: Cannot read property 'protocol' of undefined at Object.http.request (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:5186:39) at get (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:5211:17) at Object.<anonymous> (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:5157:50) at Object.<anonymous> (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:5164:30) at __webpack_require__ (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:20:30) at /opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:63:18 at Object.<anonymous> (/opt/lampp/htdocs/www/tutoNodeJs/build/collecteurHttp.js:66:10) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32)

Mon code javascript :

import {IncomingMessage, get} from "http"; get(global.process.argv[2], (res: IncomingMessage) => { res.setEncoding('utf8'); res.on("data", (data: Buffer|string) => { console.log(data.toString()) }); }).on('error', console.error);

Ma configuration webpack :

const webpack = require('webpack'); const path = require('path'); let config = { entry: { collecteurHttp: './src/collecteurHttp.ts' }, output: { path: path.resolve(__dirname, 'build'), filename: '[name].js', publicPath: '/build' }, resolve: { extensions: ['.js', '.ts'] }, module: { rules: [ { test: /\.ts$/, exclude: [/node_modules/], use: ['ts-loader'] } ] }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: JSON.stringify(process.env.NODE_ENV) } }) ] }; module.exports = config;

Et ma config typescript :

{ "files": [ "src/collecteurHttp.ts" ], "compilerOptions": { "target": "es5", "module": "es2015", "moduleResolution": "node", // Meme comportement que avec nodejs "strict": true, "allowJs": true // Inclure js }, "exclude": [ "node_modules" ] }

Quelqu'un pourrait m'aider s'il vous plaît où me donner des idées d'où pourrait venir le problème.

Je suis debutant en nodejs, et ces exercice sont de learnyounode sur github et freecodecamp.

En vous remerciant.

Edit : Merci j'ai oublié mais j'avais deja resolu mon probleme A plus

1 réponse

betaWeb, il y a 8 ans

Salut,

A l'origine, location est une propriété de l'objet window côté navigateur.
Là tu essayes d'y accéder depuis le contexte global de NodeJS, or je ne vois pas trop comment tu comptes pouvoir y accéder.
Que cherches-tu à faire exactement ?