TypeError:path.replace不是函数

时间:2016-09-22 15:03:37

标签: javascript webpack

/node_modules/webpack/lib/TemplatedPathPlugin.js:72
        .replace(REGEXP_HASH, withHashLength(getReplacer(data.hash), data.hashWithLength))
         ^

我在运行webpack时遇到此错误 - 似乎path是一个对象而不是一个字符串,因此找不到替换方法。任何人都可以解释这个错误吗?这是我的webpack.config.js

var webpack = require('webpack');
var path = require('path');

var basePath = 'app';
var outputFile = 'output.js';

var config = {

    entry: basePath + '/index.js',

    output: {
        path: basePath,
        filename: outputFile
    },

    resolve: {
        extensions: ['', '.js']
    },

    module: {
        loaders: [{
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel-loader',
            query: {
                presets: ['es2015']
            }
        }]
    }
};

module.exports = config;

2 个答案:

答案 0 :(得分:11)

检查您的插件配置。 Webpack 2略微更改了ExtractTextPlugin。它希望所有参数都包含在一个对象中,因此您的第一个参数现在是该对象上的filename值,而不是字符串。

Webpack 1方式: new ExtractTextPlugin('[hash].css', {allChunks: true, disable: false}),

Webpack 2方式: new ExtractTextPlugin({filename: '[hash].css', allChunks: true, disable: false}),

README

中的更多信息

答案 1 :(得分:0)

追踪问题的最简单方法是在文件console.log(path)上提供/node_modules/webpack/lib/TemplatedPathPlugin.js

我最近遇到了同样的错误 - 然后我转到该文件并修改了replacePathVariables函数:

function replacePathVariables(path, data) { console.log(' ---> ', path) var chunk = data.chunk; var chunkId = chunk && chunk.id;

我发现我在数组中意外设置output.publicPath选项:

output: { publicPath: ['/dist/'] }

而不是(字符串):

output: { publicPath: '/dist/' }

相关问题