Я пытаюсь загрузить request
с помощью Webpack и вижу эту ошибку:
Я видел, что это должно работать в браузере с помощью browserify, и мне было любопытно, что я делаю не так. Возможно, browserify обрабатывает зависимости иначе, чем webpack, который вызывает эту проблему. Любые идеи?
+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 требует некоторой дополнительной конфигурации в отличие от browserify из-за того, что он более простой. См. Мой пример ветки и различия, чтобы узнать, как мне удалось успешно запустить тесты.
https://github.com/request/request/compare/master...pho3nixf1re : webpack-тесты
Мой план состоит в том, чтобы превратить это в свою собственную проверку кармы и отправить PR, чтобы другие могли использовать его в качестве примера. Кроме того, он может выявить будущие проблемы по мере развития.
Да, нашел то же самое, спасибо. Для всех, кто сталкивается с этим, соответствующие документы веб-пакета находятся здесь: http://webpack.github.io/docs/configuration.html#node
@jaredmcdonald большое спасибо :)
@ pho3nixf1re было бы здорово, если бы вы отправили PR о запросе тестирования с помощью webpack (дополнительный тест, а не вместо просмотра): +1:
Да! Я собираюсь. Я заменил его только в своей ветке, чтобы быстро проверить правильность концепции. Я займусь этим в эти выходные.
Добавление загрузчика json webpack, к сожалению, не помогло мне.
Здесь та же проблема.
Решение: установите json-loader
чтобы webpack мог обрабатывать файлы * .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, но все еще получаю ошибки ...
Привет. Мне нужна помощь. Я хочу объединить 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
с транспилером babel es6. Импорт веб-пакета как import 'dotenv/config';
как описано в https://github.com/motdotla/dotenv/issues/114
Хотя приведенное выше решение node {} помогло моему webpack.config.js, оно сломало мой karma.conf.js, который от него зависит, со следующей ошибкой:
ReferenceError: строгий режим запрещает неявное создание глобального свойства '_crypto'
Кто-нибудь решил, что это работает с dotenv
?
У меня возникла эта проблема при попытке использовать node-soap
, которая зависит от request
в приложении React, которое использует webpack. Я попытался изменить конфигурацию своего веб-пакета, чтобы он содержал;
node: {
console: true,
fs: 'empty',
net: 'empty',
tls: 'empty'
}
Как было предложено выше, но это не решило проблему для меня. Я все еще вижу эти ошибки;
Другие видят те же проблемы;
https://gitter.im/vpulim/node-soap/archives/2016/04/13
https://gitter.im/vpulim/node-soap/archives/2016/01/11
И, насколько мне известно, решения пока ни у кого нет. Я не очень хорошо знаком с webpack, но если ни у кого еще нет решения, я могу попытаться сбрить этого яка в эти выходные, если у меня будет время, чтобы я мог отладить это дальше.
@kevhuang @sailingthoms @MrOutis или @gaearon Кто- нибудь из вас уже node-soap
/ request
работал с React? (Желательно с create-react-app
без извлечения).
@screendriver Откуда вы
@richburdon , @lucasbento У вас есть пример, который поможет вам?
@garethderioth, прости, я не могу вспомнить. Это было слишком давно.
Между прочим: пока что я использую API извлечения HTML5 и этот полифилл для своих запросов AJAX.
@garethderioth
@jaredmcdonald сказал это выше в https://github.com/request/request/issues/1529#issuecomment -90347445
Да, нашел то же самое, спасибо. Для всех, кто сталкивается с этим, соответствующие документы веб-пакета находятся здесь: http://webpack.github.io/docs/configuration.html#node
Между прочим: пока что я использую API извлечения HTML5 и этот полифилл для своих запросов AJAX.
Создание пользователей приложения React: обратите внимание, что CRA уже включает полифилл window.fetch
поэтому вы можете безопасно использовать его вместо request
если он соответствует вашему варианту использования.
@screendriver @josiahsprague Вместо этого:
node: {
console: true,
fs: 'empty',
net: 'empty',
tls: 'empty'
}
Я написал:
target: 'node',
Это решило все мои проблемы.
Изменить: вы можете узнать больше об этом здесь: https://webpack.github.io/docs/configuration.html#target
@gaearon Что делать, если зависимость требуется какой-то третьей библиотеке?
Поднятие проблемы в репозитории create-response-app, как я должен был с самого начала: /
Мой скриншот ошибок, опубликованный выше, не имеет отношения к делу, что, вероятно, очевидно для любого, кто прочитал эти ошибки. 😂 В любом случае, мне кажется, что оба решения в комментарии @pedzed подойдут мне. Другое возможное решение - использовать target: 'node-webkit
или другой аналогичный вариант в зависимости от вашей ситуации.
В моем случае я просто переключился с node-soap
на browser-soap
, но это не сработает для всех.
У меня была другая проблема, похожая на эту, но в итоге она оказалась socketio / socket.io-client / issues / 933 для всех, кто может с ней столкнуться.
+1
Спасибо!
Я сделал небольшое изменение, используя то, что предоставили @screendriver и @kilometer (спасибо!).
Webpack жаловался, что существует пустое расширение, однако я не думаю, что для большинства это потребуется.
`` ''
var path = require ('путь')
var request = require ('запрос')
var webpack = require ('webpack')
module.exports = {
запись: './src/main.js',
вывод: {
путь: path.resolve (__ dirname, './dist'),
publicPath: '/ dist /',
имя файла: 'build.js'
},
модуль: {
правила: [
{
тест: /.json$/,
загрузчик: 'json-loader'
}
]
},
разрешить: {
/ extension: ['.webpack.js', '.web.js', '.js'] /
}
узел: {
консоль: правда,
fs: 'пусто',
net: 'пусто',
tls: 'пусто'
}
}
`` ''
Лучшее простое решение, не влияющее на связанный код:
Для тех, у кого проблемы с сборником рассказов и которые не хотят заменять исходную конфигурацию веб-пакета сборника рассказов, вы можете расширить его, создав .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 вместо 'empty'
target: 'node',
меня сработало
Я столкнулся с этой проблемой, потому что у меня была двойная конфигурация клиент / сервер для рендеринга на стороне сервера. Конфигурация рендеринга на стороне сервера была помечена как цель: «узел», в то время как в конфигурации клиента она не была указана. Я добавил target: 'web' в конфигурацию клиента, и ошибка исчезла.
Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Спасибо за ваш вклад.
Запрос сейчас находится в режиме обслуживания и не будет объединять какие-либо новые функции или устранять эту ошибку. Пожалуйста, смотрите # 3142 для получения дополнительной информации.
У меня была такая же проблема при попытке использовать jQuery
с Nuxt
(или Node), проблема заключалась в том, что я импортировал jQuery
и Bootstrap
и добавил jsdom
чтобы решить эту проблему, но не помогло. Я решил импортировать библиотеки непосредственно в head
раздел nuxt.config.js
, другой способ - установить client mode
в подключаемых модулях конфигурации nuxt, надеюсь, это кому-то поможет.
Самый полезный комментарий
Здесь та же проблема.
Решение: установите
json-loader
чтобы webpack мог обрабатывать файлы * .json. Затем добавьте этот загрузчик и новый объектnode
в свойwebpack.config.js
следующим образом:webpack.config.js