Javascript 节点-无法运行Web包捆绑包

Javascript 节点-无法运行Web包捆绑包,javascript,node.js,webpack,webpack-4,Javascript,Node.js,Webpack,Webpack 4,我正在使用webpack捆绑我的应用程序,并且我要确保将目标指定为“节点”(否则webpack构建将失败) 使用我当前的配置,构建成功,但当我尝试使用node运行它时,我收到一个错误: C:\Users\myuser\Desktop\myproject\dist\app.js:20/******/ 模块[moduleId]。调用(module.exports、module、module.exports、, 需要的网页); ^ TypeError:无法读取未定义的属性“call” 它是指注入app

我正在使用webpack捆绑我的应用程序,并且我要确保将目标指定为“节点”(否则webpack构建将失败)

使用我当前的配置,构建成功,但当我尝试使用node运行它时,我收到一个错误:

C:\Users\myuser\Desktop\myproject\dist\app.js:20/******/
模块[moduleId]。调用(module.exports、module、module.exports、, 需要的网页); ^

TypeError:无法读取未定义的属性“call”

它是指注入app.js开头的webpackBootstrap函数内部的一行。感觉node和Webpack不兼容,尽管据我所知应该是这样的

我怀疑这与问题有关,但为了让您了解全部情况:

我正在传输ts,并将src中的每个文件作为单独的块导出到dist中,而不是将所有内容捆绑在一起,以便在运行时根据需要动态导入文件

例如:

  • src/app.ts
  • src/compA.ts
  • src/compB.ts
将成为:

  • dist/app.js
  • dist/compA.js
  • 地区/公司
这是我的webpack.config.js:

const path = require('path');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const { CheckerPlugin } = require('awesome-typescript-loader');
const glob = require('glob');

let entry = {};

glob.sync('./src/**/*.*').forEach(component => {
    let name = component.match(/.*\/(.*)\..*/)[1];

    entry[name] = component;
});

module.exports = {
    mode: 'development',
    entry,
    target: 'node',
    resolve: {
        extensions: ['.ts', '.tsx', '.js', '.jsx']
    },
    devtool: 'inline-source-map',
    devServer: {
        contentBase: './dist'
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                loader: 'awesome-typescript-loader'
            }
        ]
    },
    plugins: [
        new CleanWebpackPlugin(['dist']),
        new CheckerPlugin()
    ],
    output: {
        filename: (chunkData) => {
            let name = chunkData.chunk.name;
            let src = chunkData.chunk.entryModule.id;

            let path = src.split('/');
            let dir = path[path.length -2];
            let pathPrefix = dir !== 'src' ? dir + '/' : '';

            return pathPrefix + name + '.js';
        },
        path: path.resolve(__dirname, 'dist'),
        publicPath: '/'
    },
    optimization: {
        splitChunks: {
            chunks: 'all'
        },
    },
};

我需要在配置中包含节点外部

const path = require('path');
const nodeExternals = require('webpack-node-externals');
module.exports = {
  target: "node",
  entry: {
    app: ["./back.js"]
  },
  output: {
    path: path.resolve(__dirname, "../build"),
    filename: "bundle-back.js"
  },
  externals: [nodeExternals()],
};