Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不排除节点_模块的网页包_Javascript_Webpack - Fatal编程技术网

Javascript 不排除节点_模块的网页包

Javascript 不排除节点_模块的网页包,javascript,webpack,Javascript,Webpack,我正在为我正在构建的一个节点框架使用webpack(尽管我应该承认我应该使用gulp)。当我包含EJS模块时,webpack会将其包含在已编译的源代码中,即使我明确告诉它排除node_modules dir module.exports = { context: __dirname, target: 'node', // ... output: { libraryTarget: 'commonjs' // ... },

我正在为我正在构建的一个节点框架使用webpack(尽管我应该承认我应该使用gulp)。当我包含EJS模块时,webpack会将其包含在已编译的源代码中,即使我明确告诉它排除node_modules dir

module.exports = {
    context: __dirname,
    target: 'node',
    // ...
    output: {
        libraryTarget: 'commonjs'
        // ...
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }'
            }
        ]
    }
};
如您所见,我对JS文件进行了测试,并告诉它排除节点_模块;为什么忽略我的排除?

尝试使用绝对路径:

exclude:path.resolve(__dirname, "node_modules")

从您的配置文件来看,似乎您只是将
node_模块
排除在使用
babel loader
进行分析的范围之外,但不

要从绑定中排除
节点\ u模块
和本机节点库,您需要:

  • target:'node'
    添加到您的
    webpack.config.js
    。这将防止(路径、fs等)被捆绑
  • 使用以排除其他
    节点\u模块
  • 因此,您的结果配置文件应该如下所示:

    var nodeExternals = require('webpack-node-externals');
    ...
    module.exports = {
        ...
        target: 'node', // in order to ignore built-in modules like path, fs, etc. 
        externals: [nodeExternals()], // in order to ignore all modules in node_modules folder 
        ...
    };
    

    如果在使用TypeScript时遇到此问题,您可能需要在
    tsconfig.json
    文件中添加
    skipLibCheck:true

    这对我很有效:

    排除:[/bower\u组件/,/node\u模块/]

    模块加载程序

    一组自动应用的加载程序

    每个项目都可以具有以下属性:

    测试:必须满足的条件

    排除:必须满足的条件

    包括:必须满足的条件

    加载器:一串“!”分隔的加载器

    加载器:作为字符串的加载器数组

    一个条件可以是RegExp、绝对路径开始,或者其中一个条件与“and”组合的数组


    请参见尝试以下解决方案:

    exclude:path.resolve(__dirname, "node_modules")
    

    你能告诉我们这个项目是如何组织的吗?文件结构为什么这样做<代码>/node\u modules/将匹配节点模块中的任何可能路径,不是吗?浏览器上是否有类似的内容?(即目标:“浏览器”)我试图理解
    排除:/node\u模块/
    的作用。你能详细说明一下吗?如果我们忽略它会发生什么?这是一个正则表达式。如果您不使用它,节点单元模块将包含奇妙的答案和功能。@ŠimeVidas它将排除
    node单元模块
    dir,使
    babel加载程序
    在其上运行,但不会将其排除在bundleWelcome to StackOverflow中。如果您在其他答案的基础上提供附加值,那就更好了。在这种情况下,您的答案不会提供额外的价值,因为另一个(Alan)用户在5年前已经发布了该解决方案。一旦你有足够的声誉,你就应该投票支持它