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
Réponse acceptée

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 ?