Request: paket web

Dibuat pada 6 Apr 2015  ·  41Komentar  ·  Sumber: request/request

Saya mencoba memuat request menggunakan Webpack dan saya melihat kesalahan ini:

screen shot 2015-04-06 at 13 04 59

Saya telah melihat bahwa ini seharusnya berfungsi di browser menggunakan browserify dan ingin tahu apa yang saya lakukan salah. Mungkin browserify memproses dependensi secara berbeda dari webpack yang menyebabkan masalah ini. Ada ide?

Komentar yang paling membantu

Masalah yang sama di sini.

Solusinya: install json-loader agar webpack bisa menangani file *.json. Kemudian tambahkan pemuat itu dan objek node ke webpack.config.js seperti:

$ npm install --save-dev json-loader

webpack.config.js

var path = require('path');

module.exports = {
  entry: 'index',
  output: {
    path: path.join(__dirname, 'scripts'),
    filename: 'bundle.js'
  },
  module: {
    loaders: [
      { test: /\.json$/, loader: 'json-loader' }
    ]
  },
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.js']
  },
  node: {
    console: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
};

Semua 41 komentar

+1, juga melihat ini

Keluaran:

ERROR in ./~/request/lib/har.js
Module not found: Error: Cannot resolve module 'fs' in /absolute/path/to/project/node_modules/request/lib
 @ ./~/request/lib/har.js 3:9-22

ERROR in ./~/request/~/tunnel-agent/index.js
Module not found: Error: Cannot resolve module 'net' in /absolute/path/to/project/node_modules/request/node_modules/tunnel-agent
 @ ./~/request/~/tunnel-agent/index.js 3:10-24

ERROR in ./~/request/~/tunnel-agent/index.js
Module not found: Error: Cannot resolve module 'tls' in /absolute/path/to/project/node_modules/request/node_modules/tunnel-agent
 @ ./~/request/~/tunnel-agent/index.js 4:10-24

ERROR in ./~/request/~/forever-agent/index.js
Module not found: Error: Cannot resolve module 'net' in /absolute/path/to/project/node_modules/request/node_modules/forever-agent
 @ ./~/request/~/forever-agent/index.js 6:10-24

ERROR in ./~/request/~/forever-agent/index.js
Module not found: Error: Cannot resolve module 'tls' in /absolute/path/to/project/node_modules/request/node_modules/forever-agent
 @ ./~/request/~/forever-agent/index.js 7:10-24

ERROR in ./~/request/~/tough-cookie/lib/cookie.js
Module not found: Error: Cannot resolve module 'net' in /absolute/path/to/project/node_modules/request/node_modules/tough-cookie/lib
 @ ./~/request/~/tough-cookie/lib/cookie.js 23:10-24

ERROR in ./~/request/~/form-data/lib/form_data.js
Module not found: Error: Cannot resolve module 'fs' in /absolute/path/to/project/node_modules/request/node_modules/form-data/lib
 @ ./~/request/~/form-data/lib/form_data.js 7:9-22

ERROR in ./~/request/~/har-validator/~/is-my-json-valid/~/jsonpointer/jsonpointer.js
Module not found: Error: Cannot resolve module 'console' in /absolute/path/to/project/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer
 @ ./~/request/~/har-validator/~/is-my-json-valid/~/jsonpointer/jsonpointer.js 1:14-32

Saya menemukan jawabannya. Masalahnya adalah bahwa Webpack memerlukan beberapa konfigurasi tambahan tidak seperti browserify karena sifatnya yang lebih barebone. Lihat contoh cabang dan perbedaan saya untuk mengetahui bagaimana saya menjalankan tes dengan sukses.

https://github.com/request/request/compare/master...pho3nixf1re :webpack-tests

Rencana saya adalah mengubahnya menjadi ujian karma sendiri dan menyerahkan PR sehingga orang lain dapat menggunakannya sebagai contoh. Juga, mungkin mengungkap masalah masa depan sebagai kemajuan pembangunan.

Ya, menemukan hal yang sama, terima kasih. Untuk siapa pun yang menemukan ini, dokumen webpack yang relevan ada di sini: http://webpack.github.io/docs/configuration.html#node

@jaredmcdonald terima kasih banyak :)

@pho3nixf1re akan lebih bagus jika Anda mengirimkan PR tentang permintaan pengujian dengan webpack (tes tambahan, bukan sebagai pengganti browserify):+1:

Ya! Saya bermaksud untuk. Saya hanya menggantinya di cabang saya sebagai bukti konsep cepat. Aku akan mendapatkannya akhir pekan ini.

Sayangnya, menambahkan json webpack loader tidak memperbaiki ini untuk saya.

Masalah yang sama di sini.

Solusinya: install json-loader agar webpack bisa menangani file *.json. Kemudian tambahkan pemuat itu dan objek node ke webpack.config.js seperti:

$ npm install --save-dev json-loader

webpack.config.js

var path = require('path');

module.exports = {
  entry: 'index',
  output: {
    path: path.join(__dirname, 'scripts'),
    filename: 'bundle.js'
  },
  module: {
    loaders: [
      { test: /\.json$/, loader: 'json-loader' }
    ]
  },
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.js']
  },
  node: {
    console: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }
};

Menambahkan objek node: { ... } menghindari kesalahan, tetapi kemudian saya tidak dapat menggunakan console di browser. Apakah ada cara untuk mengatasi ini?

Saya baru saja mengetahuinya:

node: {
    console: true
}

Ini adalah bantuan besar bagi saya. Terima kasih untuk semua di atas.

Terima kasih semua, menabrak ini sendiri.

ada keberuntungan?

Saya menggunakan webpack & request dan mendapatkan kesalahan yang Anda semua dapatkan di sini.
Mencoba solusinya dengan elemen json-loader & node dan masih mendapatkan kesalahan ...

Hai. Saya membutuhkan bantuan. Saya ingin menggabungkan node js mysql ke dalam aplikasi reaksi saya. Tetapi saya mendapat pesan kesalahan tidak dapat menyelesaikan modul 'bersih' ketika saya menjalankan paket web.
Silakan lihat kode di bawah ini:

import React from 'react'
import ReactDOM from 'react-dom'
import mysql from 'mysql'

export default class Server extends React.Component{
render(){
return(
<div>
<div>Success Inserting New Data</div>
<div>Company Name: {this.props.name}</div>
<div>Email: {this.props.email}</div>
</div>
);
}
}

var company_data = {
name: 'Company Name Sample',
email: '[email protected]'
};

let connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'earnmoredoless'
});

connection.connect();

let sql = connection.query('insert into account set ?', data, function(err, res){

`//success`
`if(!err){`

    `ReactDOM.render(`
        `<Server data={company_data} />,`
        `document.querySelector('#app')`
    `);`

`}else{`

    `console.log('Failed inserting new data.');`
`}`

});

+1
ini menyelamatkan saya

+1
Diselamatkan!

+1 Saya sendiri punya masalah dengan dotenv . Solusi di atas memecahkan masalah saya. Terima kasih!

Menambahkan node { fs: 'empty' } menyelesaikan masalah cannot resolve module 'fs' untuk saya, tetapi sekarang konsol saya memiliki kesalahan TypeError: fs.readFileSync is not a function . Saya mengalami masalah ini saat mencoba menggunakan dotev dan webpack dengan es6 babel transpiler. Mengimpor webpack sebagai import 'dotenv/config'; seperti yang dijelaskan di https://github.com/motdotla/dotenv/issues/114

Sementara solusi {} simpul di atas membantu webpack.config.js saya, itu merusak karma.conf.js saya yang bergantung padanya, dengan kesalahan berikut:

ReferenceError: Mode ketat melarang pembuatan implisit properti global '_crypto'

Adakah yang memecahkan ini untuk bekerja dengan dotenv ?

Saya mengalami masalah ini saat mencoba menggunakan node-soap , yang bergantung pada request dalam aplikasi React yang menggunakan webpack. Saya telah mencoba memodifikasi konfigurasi webpack saya agar berisi;

node: {
    console: true,
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }

Seperti yang disarankan di atas, tetapi itu tidak menyelesaikan masalah bagi saya. Saya masih melihat kesalahan ini;
screen shot 2016-08-14 at 5 45 02 pm

Orang lain melihat masalah yang sama;
https://gitter.im/vpulim/node-soap/archives/2016/04/13
https://gitter.im/vpulim/node-soap/archives/2016/01/11

Dan sejauh yang saya tahu belum ada yang punya solusi. Saya tidak terlalu akrab dengan webpack, tetapi jika belum ada orang lain yang memiliki solusi, saya dapat mencoba mencukur yak itu akhir pekan ini jika saya punya waktu sehingga saya dapat men-debug ini lebih lanjut.

@kevhuang @sailingthoms @MrOutis atau @gaearon Apakah ada di antara Anda yang sudah menemukan solusi untuk ini? Atau apakah Anda punya ide tentang apa lagi yang perlu dilakukan agar node-soap / request bekerja dengan React? (Sebaiknya dengan create-react-app tanpa harus mengeluarkan).

@screendriver Dari mana Anda mendapatkan informasi tentang _node object_? Saya tidak melihatnya di dokumentasi.

@richburdon , @lucasbento Apakah ada contoh untuk membantu Anda?

@garethderioth maaf saya tidak ingat. Sudah terlalu lama.

Omong-omong: sementara itu saya menggunakan API pengambilan HTML5 dan polyfill ini untuk permintaan AJAX saya.

@garethderioth
@jaredmcdonald mengatakannya di atas di https://github.com/request/request/issues/1529#issuecomment -90347445

Ya, menemukan hal yang sama, terima kasih. Untuk siapa pun yang menemukan ini, dokumen webpack yang relevan ada di sini: http://webpack.github.io/docs/configuration.html#node

Omong-omong: sementara itu saya menggunakan API pengambilan HTML5 dan polyfill ini untuk permintaan AJAX saya.

Buat pengguna Aplikasi React: harap perhatikan bahwa CRA sudah menyertakan window.fetch polyfill sehingga Anda dapat menggunakannya dengan aman alih-alih request jika memenuhi kasus penggunaan Anda.

@screendriver @josiahsprague Alih-alih ini:

node: {
    console: true,
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
}

Saya menulis:

target: 'node',

Itu menyelesaikan semua masalah saya.

Sunting: Anda dapat membaca lebih lanjut tentangnya di sini: https://webpack.github.io/docs/configuration.html#target

@gaearon Bagaimana jika ketergantungan diperlukan oleh beberapa perpustakaan ketiga?
Mengangkat masalah di repositori create-react-app, seperti yang seharusnya saya alami sejak awal:/

Tangkapan layar kesalahan saya yang diposting di atas tidak relevan, yang mungkin jelas bagi siapa saja yang membaca kesalahan itu. 😂 Bagaimanapun, tampaknya kedua solusi dalam komentar @pedzed akan berhasil untuk saya. Solusi potensial lainnya adalah menggunakan target: 'node-webkit atau opsi serupa lainnya tergantung pada situasi Anda..

Dalam kasus saya, saya baru saja beralih dari node-soap ke browser-soap , tetapi itu tidak akan berhasil untuk semua orang.

Saya memiliki masalah berbeda yang mirip dengan ini, tetapi akhirnya menjadi socketio/socket.io-client/issues/933 untuk siapa saja yang mungkin mengalaminya

+1
Terima kasih!

Saya membuat perubahan kecil menggunakan apa yang disediakan oleh @kilometers (terima kasih!).

Webpack mengeluh jika ada ekstensi kosong, namun, saya rasa ini tidak diperlukan untuk sebagian besar.

````
var jalur = membutuhkan('jalur')
var permintaan = membutuhkan('permintaan')
var webpack = membutuhkan('paket web')

modul.ekspor = {
entri: './src/main.js',
keluaran: {
jalur: path.resolve(__dirname, './dist'),
jalur publik: '/dist/',
nama file: 'build.js'
},
modul: {
aturan: [
{
tes: /.json$/,
pemuat: 'json-loader'
}
]
},
menyelesaikan: {
/ ekstensi: ['.webpack.js', '.web.js', '.js'] /
}
simpul: {
konsol: benar,
fs: 'kosong',
bersih: 'kosong',
tl: 'kosong'
}
}
````

Solusi mudah terbaik tanpa memengaruhi kode yang dibundel:

require

Untuk teman-teman yang memiliki masalah dengan buku cerita dan tidak ingin mengganti konfigurasi webpack asli buku cerita, Anda dapat memperluasnya dengan membuat .storybook/webpack.config.js dan menambahkan:

// Load the default config generator.
const genDefaultConfig = require('@kadira/storybook/dist/server/config/defaults/webpack.config.js');

module.exports = function (config, env) {
    const newConfig = genDefaultConfig(config, env);

    // Extend to resolve fs issues
    newConfig.node = {
        fs: 'empty'
    };

    return newConfig;
};
  node: {
    console: true,
    fs: 'empty',
    net: 'empty',
    tls: 'empty'
  }

Menggunakan kesalahan kode di atas ini telah diselesaikan tetapi

fs.writeFile('/home/react-hello-world/test.txt', 'aaa', function(err) { alert(err); });

fs.writeFile tidak berfungsi, tolong berikan solusi apa pun.

@chandrasekarb coba setel fs ke true alih-alih 'kosong'

target: 'node', bekerja untuk saya :department_store:

Saya mengalami masalah ini dan itu karena saya menjalankan konfigurasi klien/server ganda untuk rendering sisi server. Konfigurasi rendering sisi server ditandai sebagai target: 'simpul', sedangkan konfigurasi klien tidak memilikinya. Saya menambahkan target: 'web' ke konfigurasi klien dan kesalahannya hilang.

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.

Permintaan sekarang dalam mode pemeliharaan dan tidak akan menggabungkan fitur baru atau mengatasi bug ini. Silakan lihat #3142 untuk informasi lebih lanjut.

Saya memiliki masalah yang sama saat mencoba menggunakan jQuery dengan Nuxt (atau Node), masalahnya adalah saya mengimpor jQuery dan Bootstrap dan menambahkan jsdom untuk menyelesaikannya tetapi tidak berhasil. Saya menyelesaikannya dengan mengimpor perpustakaan secara langsung di bagian head dari nuxt.config.js , cara lain adalah dengan mengatur client mode di plugin konfigurasi nuxt, saya harap ini membantu seseorang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat