Javascript 使用相应的子项';s包';在执行bundle时删除模块 安装程序

Javascript 使用相应的子项';s包';在执行bundle时删除模块 安装程序,javascript,node.js,typescript,npm,webpack,Javascript,Node.js,Typescript,Npm,Webpack,我创建了一个包含3个npm包的项目;根目录、客户端和服务器。每个包都包含他们特别需要的依赖项;root有构建工具,客户端有react,服务器有express——你明白了 现在。。。我意识到这可能是一个糟糕的想法,因为我在同一个地方失去了一些协同作用,但我意识到这是我这么做的部分原因 /node_modules /package.json /webpack.config.js /...etc /dist ├── server-bundle.js └── client-bundle.js /cl

我创建了一个包含3个npm包的项目;根目录、客户端和服务器。每个包都包含他们特别需要的依赖项;root有构建工具,客户端有react,服务器有express——你明白了

现在。。。我意识到这可能是一个糟糕的想法,因为我在同一个地方失去了一些协同作用,但我意识到这是我这么做的部分原因

/node_modules
/package.json
/webpack.config.js
/...etc

/dist
├── server-bundle.js
└── client-bundle.js

/client
├── node_modules/
├── package.json
└── src/

/server
├── node_modules/
├── package.json
└── src/
    └── index.ts
网页包配置:

module.exports = [
  {
    entry: "./client/src/index.tsx",
    mode: "development",
    output: {
      filename: "client-bundle.js",
      path: __dirname + "/dist"
    },
    devtool: "source-map",
    resolve: {
      extensions: [".ts", ".tsx", ".js", ".json"]
    },

    module: {
      noParse: /node_modules/,
      rules: [
        { test: /\.tsx?$/, loader: "ts-loader" },
        { enforce: "pre", test: /\.js$/, loader: "source-map-loader" }
      ]
    },
    externals: {
      "react": "React",
      "react-dom": "ReactDOM"
    },
  },
  {
    entry: "./server/src/index.ts",
    mode: "development",
    output: {
      filename: "server-bundle.js",
      path: __dirname + "/dist"
    },
    resolve: {
      extensions: [".ts", "tsx", ".js", ".json"]
    },

    module: {
      noParse: /node_modules/,
      rules: [
        { test: /\.tsx?$/, loader: "ts-loader" },
      ],
    },
  }
];
问题 构建和绑定工作正常,但是当启动服务器
node dist/server bundle.js时,我得到一个错误,即node
无法找到模块“express”
,因为根包没有此依赖项

将所有依赖项移动到根目录将解决所有问题

问题:
有什么方法可以让它在这个结构中工作,或者我的概念方法是错误的吗?

只要把你的
/dist/
移动到项目中,
客户机/dist/
服务器/dist/
在你的情况下。

你为什么捆绑服务器代码?好的,没有理由。我想我希望所有的代码都经过相同的流程(在本例中是webpack)。编辑:一个快速的谷歌会让你知道捆绑后端的几个好处。