Request: حزمة الويب

تم إنشاؤها على ٦ أبريل ٢٠١٥  ·  41تعليقات  ·  مصدر: request/request

أحاول تحميل request باستخدام Webpack وأرى هذا الخطأ:

screen shot 2015-04-06 at 13 04 59

لقد رأيت أنه من المفترض أن يعمل هذا في المتصفح باستخدام browserify وكنت أشعر بالفضول لما أفعله خطأ. ربما يعالج browserify التبعيات بشكل مختلف عن حزمة الويب التي تسبب هذه المشكلة. أيه أفكار؟

التعليق الأكثر فائدة

نفس المشكلة هنا.

الحل: قم بتثبيت json-loader حتى تتمكن حزمة الويب من التعامل مع ملفات * .json. ثم أضف هذا المُحمل وكائن node جديدًا إلى webpack.config.js كما يلي:

$ 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'
  }
};

ال 41 كومينتر

+1 ، رؤية هذا أيضًا

انتاج:

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

اكتشفتها. تكمن المشكلة في أن Webpack يتطلب بعض التهيئة الإضافية على عكس المتصفح نظرًا لأنه أكثر طبيعة مجردة. انظر مثال الفرع الخاص بي واختلف عن كيفية إجراء الاختبارات بنجاح.

https://github.com/request/request/compare/master...pho3nixf1re : اختبارات حزمة الويب

خطتي هي تحويل ذلك إلى اختبار الكارما الخاص به وإرسال العلاقات العامة حتى يتمكن الآخرون من استخدامه كمثال. أيضا ، قد تكشف عن قضايا مستقبلية مع تقدم التنمية.

نعم ، وجدت نفس الشيء ، شكرًا. لأي شخص آخر يتعثر عبر هذا ، فإن مستندات webpack ذات الصلة موجودة هنا: http://webpack.github.io/docs/configuration.html#node

jaredmcdonald شكرا جزيلا :)

@ pho3nixf1re سيكون أمرًا رائعًا إذا قمت بإرسال PR حول طلب الاختبار باستخدام حزمة الويب (اختبار إضافي ، ليس بدلاً من المتصفح واحد): +1:

نعم! أنا أنوي أن. لقد استبدلت في فرعي فقط كدليل سريع على المفهوم. سأحصل على ذلك في نهاية هذا الأسبوع.

لسوء الحظ ، لم تؤد إضافة أداة تحميل json webpack إلى حل هذه المشكلة بالنسبة لي.

نفس المشكلة هنا.

الحل: قم بتثبيت json-loader حتى تتمكن حزمة الويب من التعامل مع ملفات * .json. ثم أضف هذا المُحمل وكائن node جديدًا إلى webpack.config.js كما يلي:

$ 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'
  }
};

تؤدي إضافة الكائن node: { ... } تجنب الخطأ ، ولكن لا يمكنني استخدام console في المتصفح. هل هناك طريقة للتغلب على ذلك؟

أنا فقط حظيت بها:

node: {
    console: true
}

كانت هذه مساعدة كبيرة بالنسبة لي. شكرا لكل ما سبق.

شكرا للجميع ، اصطدمت بهذا بنفسي.

أي حظ؟

أنا أستخدم حزمة الويب وطلبها وحصلت على الخطأ الذي حصلت عليه جميعًا هنا.
جربت الحل مع json-loader & node element وما زلت تحصل على الأخطاء ...

مرحبا. انا بحاجة الى مساعدة. أريد دمج node js mysql في تطبيق رد الفعل الخاص بي. لكن تلقيت رسالة خطأ لا يمكن حل الوحدة النمطية "net" عند تشغيل حزمة الويب.
يرجى الاطلاع على الرموز أدناه:

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
هذا أنقذني

+1
أنقذ!

+1 أواجه مشكلات مع dotenv بنفسي. الحل أعلاه حل مشكلتي. شكرا!

أدت إضافة العقدة { fs: 'empty' } حل مشكلة cannot resolve module 'fs' بالنسبة لي ، ولكن يوجد الآن خطأ في وحدة التحكم الخاصة بي TypeError: fs.readFileSync is not a function . أواجه هذه المشكلة أثناء محاولتي استخدام dotev و webpack مع es6 babel transpiler. استيراد حزمة الويب كـ import 'dotenv/config'; كما هو موضح في https://github.com/motdotla/dotenv/issues/114

على الرغم من أن حل العقدة {} أعلاه ساعدني على webpack.config.js ، فقد تسبب في كسر karma.conf.js الذي يعتمد عليه ، مع الخطأ التالي:

ReferenceError: يمنع الوضع المتشدد الإنشاء الضمني للخاصية العمومية '_crypto'

أي شخص حل هذا للعمل مع dotenv ؟

أواجه هذه المشكلة أثناء محاولة استخدام node-soap ، والذي يعتمد على request في تطبيق React الذي يستخدم حزمة الويب. لقد حاولت تعديل تهيئة حزمة الويب الخاصة بي لاحتواء ؛

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

كما هو مقترح أعلاه ، لكن ذلك لم يحل المشكلة بالنسبة لي. ما زلت أرى هذه الأخطاء.
screen shot 2016-08-14 at 5 45 02 pm

يرى آخرون نفس القضايا؛
https://gitter.im/vpulim/node-soap/archives/2016/04/13
https://gitter.im/vpulim/node-soap/archives/2016/01/11

وبقدر ما أعلم ، لا أحد لديه حل بعد. لست على دراية تامة بـ webpack ، ولكن إذا لم يكن لدى أي شخص آخر حل حتى الآن ، فقد أحاول حلق هذا الياك في نهاية هذا الأسبوع إذا كان لدي الوقت حتى أتمكن من تصحيح هذا الأمر بشكل أكبر.

kevhuangsailingthomsMrOutis أوgaearon لديك أي واحد منكم اكتشف الحل لهذا حتى الآن؟ أو هل لديك أي أفكار حول ما يجب القيام به أيضًا للحصول على node-soap / request للعمل مع React؟ (يفضل أن يكون مع create-react-app دون الحاجة إلى الإخراج).

screendriver من أين تحصل على المعلومات حول كائن _node_؟ أنا لا أراه في الوثائق.

richburdon ، lucasbento هل لديك مثال لمساعدتك؟

garethderioth آسف لا أتذكر. مر وقت طويل.

بالمناسبة: في غضون ذلك ، أستخدم واجهة برمجة تطبيقات جلب HTML5 وهذا التعديل لطلبات AJAX الخاصة بي.

تضمين التغريدة
jaredmcdonald قال ذلك أعلاه في https://github.com/request/request/issues/1529#issuecomment -90347445

نعم ، وجدت نفس الشيء ، شكرًا. لأي شخص آخر يتعثر عبر هذا ، فإن مستندات webpack ذات الصلة موجودة هنا: http://webpack.github.io/docs/configuration.html#node

بالمناسبة: في غضون ذلك ، أستخدم واجهة برمجة تطبيقات جلب HTML5 وهذا التعديل لطلبات AJAX الخاصة بي.

إنشاء مستخدمي تطبيق React: يرجى ملاحظة أن CRA تتضمن بالفعل بوليفيل window.fetch لذا يمكنك استخدامه بأمان بدلاً من request إذا كان يلبي حالة الاستخدام الخاصة بك.

screendriverjosiahsprague بدلا من ذلك:

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

كتبت:

target: 'node',

لقد حلت كل مشاكلي.

تحرير: يمكنك قراءة المزيد عنها هنا: https://webpack.github.io/docs/configuration.html#target

gaearon ماذا لو كانت التبعية مطلوبة من قبل مكتبة ثالثة؟
إثارة مشكلة في مستودع create-reaction-app ، كما ينبغي أن أفعل منذ البداية: /

لقطة الشاشة الخاصة بي للأخطاء المنشورة أعلاه ليست ذات صلة ، والتي من المحتمل أن تكون واضحة لأي شخص قرأ هذه الأخطاء. 😂 على أي حال ، يبدو أن كلا الحلين في تعليق pzed سيعملان معي. حل آخر محتمل هو استخدام target: 'node-webkit أو خيار آخر مشابه حسب حالتك ..

في حالتي ، قمت للتو بالتبديل من node-soap إلى browser-soap ، لكن هذا لن يعمل مع الجميع.

واجهت مشكلة مختلفة مشابهة لهذا ، ولكن انتهى بي الأمر إلى أن أكون socketio / socket.io-client / issues / 933 لأي شخص قد يواجهها

+1
شكرا!

لقد أجريت تغييرًا بسيطًا باستخدام @ kilometers الذي قدمته (شكرًا!).

اشتكى Webpack إذا كان هناك امتداد فارغ ، ومع ذلك ، لا أعتقد أن هذا سيكون مطلوبًا في الغالب.

""
var path = يتطلب ('path')
طلب فار = يتطلب ('طلب')
var webpack = يتطلب ('webpack')

module.exports = {
الإدخال: "./src/main.js" ،
انتاج: {
المسار: path.resolve (__ dirname، './dist') ،
publicPath: '/ dist /'،
اسم الملف: "build.js"
} ،
وحدة: {
قواعد: [
{
الاختبار: /.json$/ ،
لودر: 'json-loader'
}
]
} ،
حل: {
/ ملحقات: ['.webpack.js'، '.web.js'، '.js'] /
}
العقدة: {
وحدة التحكم: صحيح ،
fs: "فارغ"،
net: "فارغ" ،
tls: "فارغ"
}
}
""

أفضل حل سهل دون التأثير على الكود المجمّع:

require

بالنسبة إلى الأشخاص الذين يعانون من مشاكل في القصص المصورة ولا يرغبون في استبدال تكوين webpack الأصلي لقصص القصص القصيرة ، يمكنك تمديده عن طريق إنشاء .storybook/webpack.config.js وإضافة:

// 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'
  }

باستخدام هذا الخطأ رمز أعلاه تم حلها ولكن

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

fs.writeFile لا يعمل ، يرجى إعطاء أي حل.

chandrasekarb حاول ضبط fs على true بدلاً من "فارغ"

عمل لي target: 'node', : department_store:

واجهت هذه المشكلة وكان ذلك لأنني كنت أقوم بتشغيل تكوين عميل / خادم مزدوج للعرض من جانب الخادم. تم وضع علامة على تكوين العرض من جانب الخادم كهدف: "عقدة" ، بينما لم يتم تحديد تكوين العميل. لقد أضفت الهدف: "الويب" إلى تكوين العميل واختفى الخطأ.

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

الطلب الآن في وضع الصيانة ولن يتم دمج أي ميزات جديدة أو معالجة هذا الخطأ. الرجاء مراجعة # 3142 لمزيد من المعلومات.

واجهت نفس المشكلة أثناء محاولة استخدام jQuery مع Nuxt (أو العقدة) ، كانت المشكلة أنني كنت أستورد jQuery و Bootstrap وأضفت jsdom لحلها لكنها لم تنجح. لقد قمت بحلها باستيراد المكتبات مباشرة في قسم head من nuxt.config.js ، هناك طريقة أخرى لتعيين client mode في مكونات nuxt config الإضافية ، وآمل أن تساعد شخصًا ما.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات