首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将webpack配置导出为函数失败

将webpack配置导出为函数失败
EN

Stack Overflow用户
提问于 2018-10-01 15:18:02
回答 2查看 2.9K关注 0票数 2

我试图在webpack配置中处理开发和生产变量(请参阅https://webpack.js.org/guides/production/),但是它失败了

代码语言:javascript
复制
WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration should be an object.

package.json

代码语言:javascript
复制
        {
          "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1",
            "build": "./node_modules/.bin/webpack",
            "start": "npm run build && node server.js"
          },
          "devDependencies": {
             //...
             "webpack": "^4.20.2",
             "webpack-cli": "^3.1.2",
             "webpack-dev-middleware": "^3.4.0",
             "webpack-hot-middleware": "^2.24.2"
          }
       }

webpack.config.js

代码语言:javascript
复制
const path = require('path'),
    webpack = require('webpack'),
    HtmlWebpackPlugin = require('html-webpack-plugin');

let config = {
    entry: {
        app: [
            './src/app/App.tsx', 'webpack-hot-middleware/client'
        ],
        vendor: ['react', 'react-dom']
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'js/[name].bundle.js'
    },
    // ...
}

此导出正在按预期工作,没有错误或警告。

代码语言:javascript
复制
module.exports = config; // everything is fine

但这是失败的

代码语言:javascript
复制
module.exports = function(env, argv) { // this errors

    return config;
};

这里有一个类似但未回答的问题:webpack base config as a function doesn't work

这是一种非常神秘的行为,感谢任何人能帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 15:07:04

嗯,它起作用了。我没有注意到错误发生在代码的一个完全不同的位置。

我和webpack和特快专递一起做了一本关于HMR的教程。A这是快速设置中的代码行,它造成了麻烦:

server.js

代码语言:javascript
复制
const webpackConfig = require('./webpack.config');
const compiler = webpack(webpackConfig);
//...
app.use(
    require('webpack-dev-middleware')(compiler, {
        noInfo: true,
        publicPath: webpackConfig.output.publicPath
    })
);

webpackConfig只得到一个函数而不被调用,所以它不会返回一个对象。所以加括号才能让它起作用。

代码语言:javascript
复制
const webpackConfig = require('./webpack.config')();
//..
票数 6
EN

Stack Overflow用户

发布于 2020-01-13 17:45:52

文档有点古怪。您正确地忘记了从package.json设置env变量

例如,"start": "webpack --env.prod --", in package.json将传递{prod: true}作为env变量。

希望这能有所帮助。

更多信息在这里:https://webpack.js.org/api/cli/#environment-options

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52594167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档