рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ request
рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдЙрддреНрд╕реБрдХ рдерд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд░рд╛рдЗрдЬрд╝ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╡реЗрдмрдкреИрдХ рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд░рд╣рд╛ рд╣реИред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
+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
рдореИрдВ рдпрд╣ рд╕рдордЭ рдЧрдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдмреЗрдпрд░рдмреЛрди рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рдореЗрд░реА рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдЦрд╛ рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░ рдХрд░реЗрдВ рдХрд┐ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдорд┐рд▓рд╛ред
https://github.com/request/request/compare/master...pho3nixf1re :webpack-tests
рдореЗрд░реА рдпреЛрдЬрдирд╛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд░реНрдо рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдиреЗ рдХреА рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рд╕рд╛рде рд╣реА, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХрд╛рд╕ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред
рд╣рд╛рдБ, рд╡рд╣реА рдорд┐рд▓рд╛, рдзрдиреНрдпрд╡рд╛рджред рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡реЗрдмрдкреИрдХ рдбреЙрдХреНрд╕ рдпрд╣рд╛рдВ рд╣реИрдВ: http://webpack.github.io/docs/configuration.html#node
@jaredmcdonald рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :)
@ pho3nixf1re рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ): +1:
рд╣рд╛рдВ! рдореИрдВ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реБрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рддреНрд╡рд░рд┐рдд рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрд╕ рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рдКрдВрдЧрд╛ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬреЗрд╕рди рд╡реЗрдмрдкреИрдХ рд▓реЛрдбрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдирд╣реАрдВ рд╣реБрдЖред
рдпрд╣рд╛рдБ рд╡рд╣реА рдореБрджреНрджрд╛ред
рд╕рдорд╛рдзрд╛рди: 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
}
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рдорджрдж рдереАред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдореЗрдВ рдЦреБрдж рдЯрдХрд░рд╛ рдЧрдпрд╛ред
рдХреЛрдЗ рднрд╛рдЧреНрдп?
рдореИрдВ рд╡реЗрдмрдкреИрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЖрдк рд╕рднреА рдХреЛ рдпрд╣рд╛рдВ рдорд┐рд▓реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред
рдЬреЗрд╕рди-рд▓реЛрдбрд░ рдФрд░ рдиреЛрдб рддрддреНрд╡ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВ ...
рдирдорд╕реНрддреЗред рдореБрдЭреЗ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдРрдк рдореЗрдВ рдиреЛрдб рдЬреЗрдПрд╕ MySQL рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рд╡реЗрдмрдкреИрдХ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЙрдбреНрдпреВрд▓ 'рдиреЗрдЯ' рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рджреЗрдЦреЗрдВ:
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 рдмреЗрдмрд▓ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рд╕рд╛рде dotev
рдФрд░ webpack
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВред рд╡реЗрдмрдкреИрдХ рдХреЛ import 'dotenv/config';
рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЬреИрд╕рд╛ рдХрд┐ https://github.com/motdotla/dotenv/issues/114 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ
рдЬрдмрдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдиреЛрдб {} рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ webpack.config.js рдХреЛ рдорджрдж рдХреА, рдЗрд╕рдиреЗ рдореЗрд░реЗ karma.conf.js рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдЬреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде:
рд╕рдВрджрд░реНрдн рддреНрд░реБрдЯрд┐: рд╕рдЦреНрдд рдореЛрдб рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдкрддреНрддрд┐ '_crypto' рдХреЗ рдирд┐рд╣рд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ
рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ dotenv
рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд┐рдпрд╛?
node-soap
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ, рдЬреЛ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдПрдХреНрдЯ рдРрдк рдореЗрдВ request
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреА рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ;
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
рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЕрднреА рддрдХ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╡реЗрдмрдкреИрдХ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЙрд╕ рдпрд╛рдХ рдХреЛ рджрд╛рдврд╝реА рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдФрд░ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
@kevhuang @sailingthoms @MrOutis рдпрд╛ @gaearon рдХреНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрд╛ рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ node-soap
/ request
рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? (рдмреЗрджрдЦрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдзрд┐рдорд╛рдирддрдГ create-react-app
рдХреЗ рд╕рд╛рде)ред
@screendriver рдЖрдкрдХреЛ _node рдСрдмреНрдЬреЗрдХреНрдЯ_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓реА? рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред
@richburdon , @lucasbento рдХреНрдпрд╛ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ?
@garethderioth рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИред рдмрдбрд╝рд╛ рд▓рдВрдмрд╛ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИред
рд╡реИрд╕реЗ: рдЗрд╕ рдмреАрдЪ рдореИрдВ рдЕрдкрдиреЗ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП HTML5 fetch API рдФрд░ рдЗрд╕ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
@ рдЧреИрд░реЗрдердбреЗрд░рд┐рдпреЛрде
@jaredmcdonald рдиреЗ рдЗрд╕реЗ рдКрдкрд░ https://github.com/request/request/issues/1529#issuecomment -90347445 рдореЗрдВ рдХрд╣рд╛ рд╣реИ
рд╣рд╛рдБ, рд╡рд╣реА рдорд┐рд▓рд╛, рдзрдиреНрдпрд╡рд╛рджред рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИ, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡реЗрдмрдкреИрдХ рдбреЙрдХреНрд╕ рдпрд╣рд╛рдВ рд╣реИрдВ: http://webpack.github.io/docs/configuration.html#node
рд╡реИрд╕реЗ: рдЗрд╕ рдмреАрдЪ рдореИрдВ рдЕрдкрдиреЗ AJAX рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП HTML5 fetch API рдФрд░ рдЗрд╕ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд░рд┐рдПрдХреНрдЯ рдРрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ: рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реАрдЖрд░рдП рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ 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 рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдХреНрд░рд┐рдПрдЯ-рд░рд┐рдПрдХреНрд╢рди-рдРрдк рдХреЗ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдЙрдард╛рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рднрд┐рдЦрд╛рд░реА рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: /
рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдореЗрд░рд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИред ЁЯШВ рд╡реИрд╕реЗ рднреА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @pedzed рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ target: 'node-webkit
рдпрд╛ рдЕрдиреНрдп рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рдХрд╛
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрднреА node-soap
рд╕реЗ browser-soap
рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдерд╛ рдЬреЛ рдЗрд╕рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА socketio/socket.io-client/issues/933 рдЬреЛ рдЗрд╕реЗ рдЕрдиреБрднрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛
+1
рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВрдиреЗ рдЬреЛ @screendriver рдФрд░ @kilometers рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж!)ред
рд╡реЗрдмрдкреИрдХ рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдЦрд╛рд▓реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
````
рд╡рд░ рдкрде = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдкрде')
рд╡рд░ рдЕрдиреБрд░реЛрдз = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдЕрдиреБрд░реЛрдз')
рд╡рд░ рд╡реЗрдмрдкреИрдХ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╡реЗрдмрдкреИрдХ')
рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯ = {
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐: './src/main.js',
рдЖрдЙрдЯрдкреБрдЯ: {
рдкрде: рдкрдеред рд╕рдорд╛рдзрд╛рди (__dirname, './dist'),
рдкрдмреНрд▓рд┐рдХрдкрд╛рде: '/ рдЬрд┐рд▓рд╛/',
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо: 'рдмрд┐рд▓реНрдб.рдЬреЗрдПрд╕'
},
рдорд╛рдкрд╛рдВрдХ: {
рдирд┐рдпрдо: [
{
рдкрд░реАрдХреНрд╖рдг: /.json$/,
рд▓реЛрдбрд░: 'рдЬреЗрд╕рди-рд▓реЛрдбрд░'
}
]
},
рд╕рдВрдХрд▓реНрдк: {
/ рдПрдХреНрд╕рдЯреЗрдВрд╢рди: ['.webpack.js', '.web.js', '.js'] /
}
рдиреЛрдб: {
рдХрдВрд╕реЛрд▓: рд╕рдЪ,
рдПрдлрдПрд╕: 'рдЦрд╛рд▓реА',
рдиреЗрдЯ: 'рдЦрд╛рд▓реА',
рдЯреАрдПрд▓рдПрд╕: 'рдЦрд╛рд▓реА'
}
}
````
рдмрдВрдбрд▓ рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди:
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЬреЛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рдореВрд▓ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк .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 рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреГрдкрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рджреЗрдВред
@рдЪрдВрджреНрд░рд╕реЗрдХрд░рдм 'рдЦрд╛рд▓реА' рдХреЗ рдмрдЬрд╛рдп fs рдХреЛ рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
target: 'node',
рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛: рдбрд┐рдкрд╛рд░реНрдЯрдореЗрдВрдЯ_рд╕реНрдЯреЛрд░:
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░реА рдХреНрд▓рд╛рдЗрдВрдЯ/рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: 'рдиреЛрдб', рдЬрдмрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝рд╛: рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ 'рд╡реЗрдм' рдФрд░ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЕрдиреБрд░реЛрдз рдЕрдм рд░рдЦрд░рдЦрд╛рд╡ рдореЛрдб рдореЗрдВ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрд╛ рдЗрд╕ рдмрдЧ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ #3142 рджреЗрдЦреЗрдВред
рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ jQuery
рдХреЗ рд╕рд╛рде Nuxt
(рдпрд╛ рдиреЛрдб), рд╕рдорд╕реНрдпрд╛ рдерд╛ рдореИрдВ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдЧрдпрд╛ рдерд╛ jQuery
рдФрд░ Bootstrap
рдФрд░ рдХрд╣рд╛ рдХрд┐ jsdom
рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ head
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ nuxt.config.js
рдореЗрдВ рд╕реАрдзреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╣рд▓ рдХрд┐рдпрд╛, рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ client mode
рдХреЛ nuxt config рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдБ рд╡рд╣реА рдореБрджреНрджрд╛ред
рд╕рдорд╛рдзрд╛рди:
json-loader
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡реЗрдмрдкреИрдХ *.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХреЗред рдлрд┐рд░ рдЙрд╕ рд▓реЛрдбрд░ рдФрд░ рдПрдХ рдирдпрд╛node
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдиреЗwebpack.config.js
рддрд░рд╣ рдЬреЛрдбрд╝реЗрдВ:webpack.config.js