1

我将 Razzle 用于服务器端渲染的反应应用程序。

现在是时候在服务器上部署应用程序了。我使用 IIS 作为 Web 服务器。但是,当我将构建文件夹移动到另一个目录并在其上运行节点服务器时,会出现错误,我无法找到我在应用程序中使用的模块,例如 react。

internal/modules/cjs/loader.js:638
    throw err;
    ^
Error: Cannot find module 'react'
...

我应该将 node_modules 文件夹与构建文件夹一起移动吗?还是我做错了什么?

4

2 回答 2

6

因为没有人回答我的问题。我分享我的发现。

Razzle 使用 webpack-node-externals 在构建时排除 node_modules。(我不知道为什么)

对 razzle.config.js 进行一个简单的更改就可以解决这个问题。

module.exports = {
    modify: (config, { target, dev }, webpack) => {
      if (target === "node") {
        config.externals = []    
      }
      return config;
    },
  };
于 2019-09-01T10:06:37.997 回答
2

您需要将 node_modules 与构建文件夹一起移动。因为 build 文件夹中的 server.js 和 bundle 文件需要您安装的模块。出现上述错误是因为服务器找不到react模块。

于 2019-08-26T14:08:20.740 回答