我正在尝试使用 Webpack 加载request
并看到此错误:
我已经看到这应该在使用 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-tests
我的计划是将其转化为自己的业力测试并提交 PR,以便其他人可以将其用作示例。 此外,随着开发的进展,它可能会发现未来的问题。
嗯,找到了,谢谢对于偶然发现的其他人,相关的 webpack 文档在这里: http ://webpack.github.io/docs/configuration.html#node
@jaredmcdonald非常感谢:)
@pho3nixf1re如果您使用 webpack 提交有关测试请求的 PR(附加测试,而不是代替 browserify 测试),那就太好了:+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
}
这对我来说是一个巨大的帮助。 感谢以上所有。
谢谢大家,我自己碰到了这个。
运气好的话?
我正在使用 webpack & request 并得到了你们都在这里的错误。
使用 json-loader & node 元素尝试了解决方案,但仍然出现错误...
你好。 我需要帮助。 我想将 node js mysql 合并到我的 React 应用程序中。 但是当我运行 webpack 时,我收到错误消息无法解析模块 '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 转译器一起使用时遇到了这个问题。 如https://github.com/motdotla/dotenv/issues/114 中所述,将 webpack 导入为import 'dotenv/config';
虽然上面的 node {} 解决方案帮助了我的 webpack.config.js,但它破坏了我依赖它的 karma.conf.js,并出现以下错误:
ReferenceError:严格模式禁止隐式创建全局属性“_crypto”
有人解决了这个问题以使用dotenv
吗?
我在尝试使用node-soap
时遇到了这个问题,这取决于使用 webpack 的 React 应用程序中的request
。 我尝试修改我的 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你从哪里得到关于 _node object_ 的信息? 我在文档中没有看到它。
@richburdon , @lucasbento有例子可以帮助你吗?
@garethderioth抱歉,我不记得了。 这很久了。
顺便说一句:同时我正在使用 HTML5 fetch API 和这个polyfill 来处理我的 AJAX 请求。
@garethderioth
@jaredmcdonald在https://github.com/request/request/issues/1529#issuecomment -90347445 上面说过
嗯,找到了,谢谢对于偶然发现的其他人,相关的 webpack 文档在这里: http ://webpack.github.io/docs/configuration.html#node
顺便说一句:同时我正在使用 HTML5 fetch API 和这个 polyfill 来处理我的 AJAX 请求。
创建 React App 用户:请注意,CRA 已经包含一个window.fetch
polyfill,因此如果它满足您的用例,您可以安全地使用它而不是request
。
@screendriver @josiahsprague而不是这个:
node: {
console: true,
fs: 'empty',
net: 'empty',
tls: 'empty'
}
我写:
target: 'node',
它解决了我所有的问题。
编辑:您可以在此处阅读更多相关信息: https :
@gaearon如果某些第三方库需要依赖
在 create-react-app 的存储库中提出问题,正如我从一开始就应该有的那样:/
我上面发布的错误截图无关紧要,这对于阅读这些错误的人来说可能是显而易见的。 😂 无论如何, @pedzed评论中的两种解决方案似乎都适合我。 另一个潜在的解决方案是根据您的情况使用target: 'node-webkit
或其他类似的选项。
就我而言,我刚刚从node-soap
切换到browser-soap
,但这并不适用于所有人。
我有一个与此类似的不同问题,但最终成为 socketio/socket.io-client/issues/933 对于任何可能遇到它的人
+1
谢谢!
我使用@screendriver & @kilometers提供的内容做了一个小改动(谢谢!)。
Webpack 会抱怨如果有一个空的扩展名,但是,我认为这对大多数人来说是不需要的。
````
var path = require('path')
var request = require('请求')
var webpack = require('webpack')
模块.出口 = {
条目:'./src/main.js',
输出: {
路径:path.resolve(__dirname, './dist'),
publicPath: '/dist/',
文件名:'build.js'
},
模块: {
规则: [
{
测试:/.json$/,
装载机:'json-装载机'
}
]
},
解决: {
/扩展名:['.webpack.js', '.web.js', '.js'] /
}
节点:{
控制台:真的,
fs: '空',
净:'空',
tls: '空'
}
}
````
不影响捆绑代码的最佳简单解决方案:
对于对storybook有问题并且不想替换 storybook 的原始 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:
我遇到了这个问题,这是因为我正在为服务器端渲染运行双客户端/服务器配置。 服务器端渲染配置被标记为 target: 'node',而客户端配置没有指定。 我在客户端配置中添加了 target: 'web' 并且错误消失了。
此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。
Request 现在处于维护模式,不会合并任何新功能或解决此错误。 有关更多信息,请参阅#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