Getting “Error: `output.path` needs to be an absolute path or `/`”

后端 未结 4 1997
离开以前
离开以前 2020-12-01 01:30

I am new to JS development, in an attempt to hot load changes using webpack-dev-server I keep above exception. The exact stack is:

Error: `output.path` needs         


        
相关标签:
4条回答
  • 2020-12-01 02:09

    You can use it like following code to get absolute path.

    output: {
      path: require('path').resolve("./dist/js"),
      filename: 'bundle.js',
      publicPath: 'http://127.0.0.1:2992/js'
    }
    
    0 讨论(0)
  • 2020-12-01 02:18

    As the error message says, you need to use absolute path.

    To get an absolute path for current directory, You can use __dirname to get the current directory and then append dist/js. So it would be something like,

    output: {
        path: __dirname + "/dist/js", // or path: path.join(__dirname, "dist/js"),
        filename: "bundle.js"
    }
    

    Both will work just fine. You can read about webpack configuration here

    Edit: To use path: path.join(__dirname, "dist/js") you will need to require node's built-in path module.

    Quoting from the docs:

    Path module: It provides utilities for working with file and directory paths. Using it with the prefix __dirname global will prevent file path issues between operating systems and will allow relative paths to work as expected.

    You can require it at the top of your webpack.config.js as

    var path = require('path');
    .....
    ....
    ..
    output: {
        path: path.join(__dirname, "dist/js"),
        filename: "bundle.js"
    }
    // rest of the configuration
    

    Apart from above two methods, You can also use path.resolve as mentioned here.

    path: path.resolve(__dirname, "dist/js")
    

    Hope it helps :)

    0 讨论(0)
  • 2020-12-01 02:23

    You could use __dirname to get current executed file's path.

    const webpack = require('webpack')
    
    module.exports = {
        mode: 'development',
        entry: __dirname + "/src/index.js",
        output: {
            path: __dirname + "/dist",
            filename: 'main.js'
        }
    }
    

    You could also import build-in path API & use resolve method, i think this one is prefer by webpack

    const webpack = require('webpack')
    const path = require('path')
    
    module.exports = {
        mode: 'development',
        entry:  path.resolve("./src/index.js"),
        output: {
            path: path.resolve("./dist"),
            filename: 'main.js'
        }
    }
    
    0 讨论(0)
  • 2020-12-01 02:29

    you need to include this at the top of or webpack.config.js file var path = require('path') and then in your path do the following: path: path.join(__dirname, "dist/js")

    0 讨论(0)
提交回复
热议问题