reconoce - webpack-dev-server vulnerability
Obteniendo "Error:` output.path` necesita ser una ruta absoluta o `/` " (3)
Soy nuevo en el desarrollo de JS, en un intento de realizar cambios de carga mediante el uso de webpack-dev-server, sigo por encima de la excepción. La pila exacta es:
Error: `output.path` needs to be an absolute path or `/`.
at Object.Shared.share.setFs (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-middleware/lib/Shared.js:88:11)
at Shared (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-middleware/lib/Shared.js:214:8)
at module.exports (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-middleware/middleware.js:22:15)
at new Server (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-server/lib/Server.js:56:20)
at startDevServer (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-server/bin/webpack-dev-server.js:379:12)
at processOptions (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-server/bin/webpack-dev-server.js:317:3)
at Object.<anonymous> (/Users/mybox/work/day1/ex6/node_modules/webpack-dev-server/bin/webpack-dev-server.js:441:1)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
Aquí están los archivos de configuración del paquete web que ya he probado:
module.exports = {
entry: "./client/app.jsx",
output: {
path: "dist/js",
filename: "bundle.js",
publicPath: "http://127.0.0.1:2992/js"
},
module: {
loaders: [
{
test: /.jsx?$/,
loader: "babel-loader",
include: /client/
}
]
}
};
Y:
module.exports = {
entry: "./client/app.jsx",
output: {
path: "/Users/mybox/work/day1/ex6/dist/js",
filename: "bundle.js",
publicPath: "http://127.0.0.1:2992/js"
},
module: {
loaders: [
{
test: /.jsx?$/,
loader: "babel-loader",
include: /client/,
query: {
presets:[''react'']
}
}
]
}
};
A continuación se muestra mi archivo package.json
{
"name": "ex6",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"server": "node index.js",
"hot": "webpack-dev-server --inline --hot --port 2992 --progress --colors",
"dev": "webpack-dev-server --inline --dev --port 2992 --progress --colors"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"babel-preset-es2015": "^6.22.0",
"hapi": "^16.1.0",
"inert": "^4.1.0"
},
"devDependencies": {
"babel": "^6.5.2",
"babel-cli": "^6.22.2",
"babel-core": "^6.22.1",
"babel-loader": "^6.2.10",
"babel-preset-react": "^6.22.0",
"builder": "^3.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.3.0"
},
"description": ""
}
Como dice el mensaje de error, debe utilizar la ruta absoluta.
Para obtener una ruta absoluta para el directorio actual, puede usar __dirname para obtener el directorio actual y luego agregar dist/js
. Entonces sería algo así como,
output: {
path: __dirname + "/dist/js", // or path: path.join(__dirname, "dist/js"),
filename: "bundle.js"
}
Ambos funcionarán bien. Puedes leer acerca de la configuración del webpack here
Edición : Para usar path: path.join(__dirname, "dist/js")
necesitará un módulo de path
integrado en el nodo.
Citando de los documentos:
Módulo de ruta : proporciona utilidades para trabajar con rutas de archivos y directorios. Si se usa con el prefijo __dirname global, se evitarán problemas de ruta de archivo entre sistemas operativos y se permitirá que las rutas relativas funcionen como se espera.
Puede webpack.config.js
en la parte superior de su webpack.config.js
como
var path = require(''path'');
.....
....
..
output: {
path: path.join(__dirname, "dist/js"),
filename: "bundle.js"
}
// rest of the configuration
Aparte de los dos métodos anteriores, también puede usar path.resolve
como se menciona here .
path: path.resolve(__dirname, "dist/js")
Espero eso ayude :)
Puedes usarlo como código siguiente para obtener la ruta absoluta.
output: {
path: require(''path'').resolve("./dist/js"),
filename: ''bundle.js'',
publicPath: ''http://127.0.0.1:2992/js''
}
debe incluir esto en la parte superior del archivo webpack.config.js var path = require(''path'')
y luego en su ruta haga lo siguiente: path: path.join(__dirname, "dist/js")