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ïŒ
ã¯ãïŒ ããã€ããã§ãã æŠå¿µå®èšŒãšããŠããã©ã³ãã§äº€æããã ãã§ãã ç§ã¯ä»é±æ«ã«ä¹ããŸãã
æ®å¿µãªãããjsonwebpackããŒããŒãè¿œå ããŠãããã¯ä¿®æ£ãããŸããã§ããã
ããã§åãåé¡ã
解決çïŒ 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èŠçŽ ã䜿çšããŠãœãªã¥ãŒã·ã§ã³ãè©ŠããŸããããããã§ããšã©ãŒãçºçããŸã...
ããã«ã¡ã¯ã ç§ã¯å©ããå¿
èŠã§ãã ããŒãjsmysqlã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
ãŸãã es6 babel transpilerã§dotev
ãšwebpack
ã䜿çšããããšããŠãããšãã«ããã®åé¡ãçºçããŠããŸãã https://github.com/motdotla/dotenv/issues/114ã§èª¬æãããŠããããã«ãwebpackãimport 'dotenv/config';
ãšããŠã€ã³ããŒãããŸã
äžèšã®ããŒã{}ãœãªã¥ãŒã·ã§ã³ã¯ç§ã®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ãªããžã§ã¯ã_ã«é¢ããæ å ±ã¯ã©ãã§å ¥æããŸãããïŒ ããã¥ã¡ã³ãã«è¡šç€ºãããŠããŸããã
@ richburdon ã @ lucasbentoããªããå©ããããã®äŸããããŸããïŒ
@garethderiothãã¿ãŸãã
ã¡ãªã¿ã«ããã®éãç§ã¯HTML5ãã§ããAPIãšãã®ããªãã£ã«ãAJAXãªã¯ãšã¹ãã«äœ¿çšããŠããŸãã
@garethderioth
@jaredmcdonaldã¯ãäžèšã®https://github.com/request/request/issues/1529#issuecomment-90347445ã§ãããè¿°ã¹ãŠã
ãããåãããšãèŠã€ããŸãããããããšãã ããã«ééããä»ã®äººã®ããã«ãé¢é£ããwebpackããã¥ã¡ã³ãã¯ããã«ãããŸãïŒ http ïŒ//webpack.github.io/docs/configuration.html#node
ã¡ãªã¿ã«ããã®éãç§ã¯HTML5ãã§ããAPIãšãã®ããªãã£ã«ãAJAXãªã¯ãšã¹ãã«äœ¿çšããŠããŸãã
React AppãŠãŒã¶ãŒã®äœæïŒCRAã«ã¯ãã§ã«window.fetch
ããªãã£ã«ãå«ãŸããŠããããããŠãŒã¹ã±ãŒã¹ãæºããå Žåã¯request
代ããã«å®å
šã«äœ¿çšã§ããŸãã
@screendriver @josiahspragueããã®ä»£ããã«ïŒ
node: {
console: true,
fs: 'empty',
net: 'empty',
tls: 'empty'
}
ç§ãæžããïŒ
target: 'node',
ããã¯ç§ã®ãã¹ãŠã®åé¡ã解決ããŸããã
ç·šéïŒããã§ããã«ã€ããŠãã£ãšèªãããšãã§ããŸãïŒ https ïŒ
@gaearonäŸåé¢ä¿ã3çªç®ã®ã©ã€ãã©ãªã§å¿
èŠãªå Žåã¯ã©ããªããŸããïŒ
ç§ãæåããæã£ãŠããã¯ãã®ããã«ã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ïŒ 'request'ïŒ
var webpack = requireïŒ 'webpack'ïŒ
module.exports = {
ãšã³ããªïŒ './ src / main.js'ã
åºåïŒ{
ãã¹ïŒpath.resolveïŒ__ dirnameã 'ã/ dist'ïŒã
publicPathïŒ '/ dist /'ã
ãã¡ã€ã«åïŒ 'build.js'
}ã
ã¢ãžã¥ãŒã«ïŒ{
ã«ãŒã«ïŒ[
{{
ãã¹ãïŒ/ãjson $ /ã
ããŒããŒïŒ 'json-loader'
}
]
}ã
è§£æ±ºïŒ {
/æ¡åŒµåïŒ['ãwebpack.js'ã 'ãweb.js'ã 'ãjs'] /
}
ããŒãïŒ{
ã³ã³ãœãŒã«ïŒtrueã
fsïŒ '空'ã
ãããïŒ '空'ã
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ã«èšå®ããŠã¿ãŠãã ãã
target: 'node',
ã¯ç§ã®ããã«åããïŒdepartment_storeïŒ
ãã®åé¡ãçºçããŸãããããã¯ããµãŒããŒåŽã®ã¬ã³ããªã³ã°çšã«ãã¥ã¢ã«ã¯ã©ã€ã¢ã³ã/ãµãŒããŒæ§æãå®è¡ããŠããããã§ãã ãµãŒããŒåŽã®ã¬ã³ããªã³ã°æ§æã¯ã¿ãŒã²ãããšããŠããŒã¯ãããŸããïŒ 'ããŒã'ãã¯ã©ã€ã¢ã³ãæ§æã«ã¯æå®ãããŠããŸããã ã¿ãŒã²ããïŒ 'web'ãã¯ã©ã€ã¢ã³ãæ§æã«è¿œå ãããšããšã©ãŒã¯ãªããªããŸããã
ãã®åé¡ã¯ãæè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«å€ããã®ãšããŠããŒã¯ãããŠããŸãã ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåã¯éããããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
ãªã¯ãšã¹ãã¯çŸåšã¡ã³ããã³ã¹ã¢ãŒãã«ãªã£ãŠãããæ°æ©èœãããŒãžãããããã®ãã°ã«å¯ŸåŠãããããããšã¯ãããŸããã 詳现ã«ã€ããŠã¯ãïŒ3142ãåç §ããŠãã ããã
Nuxt
ïŒãŸãã¯ããŒãïŒã§jQuery
ã䜿çšããããšããŠãåãåé¡ãçºçããŸãããåé¡ã¯ã jQuery
ãšBootstrap
ãã€ã³ããŒããã jsdom
ãè¿œå ããããšã§ãã nuxt.config.js
head
ã»ã¯ã·ã§ã³ã§ã©ã€ãã©ãªãçŽæ¥ã€ã³ããŒãããããšã解決ããŸãããå¥ã®æ¹æ³ã¯ãnuxtæ§æãã©ã°ã€ã³ã§client mode
ãèšå®ããããšã§ãã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
ããã§åãåé¡ã
解決çïŒ
json-loader
ã€ã³ã¹ããŒã«ããŠãwebpackã* .jsonãã¡ã€ã«ãåŠçã§ããããã«ããŸãã 次ã«ããã®ããŒããŒãšæ°ããnode
ãªããžã§ã¯ããwebpack.config.js
ããã«è¿œå ããŸããwebpack.config.js