如何使用@nrwl/express提供静态文件服务

3
我正在使用nx和@nrwl/express插件来管理我的工作环境。我想从express服务器提供静态文件,但一直没有成功。
我尝试了以下方法:
express.static(path.join(__dirname, 'videos'));

但我无法获取视频目录中的文件,总是出现404错误。 我尝试了这两个URL: http://localhost:3333/api/output.m3u8 http://localhost:3333/output.m3u8 视频目录位于我的应用程序根目录下。 你有什么想法可以解决这个问题吗?
2个回答

1
使用dist文件夹中的内容,因此需要复制源文件夹。 在project.json中添加一行。
{
  "targets": {
    "build": {
      "executor": "@nrwl/node:webpack",
      "outputs": ["{options.outputPath}"],
      "options": {
        ...
        "assets": ["packages/<your-app>/src/public"] <-- need add this line
      },
      "configurations": {
        ...
      }
    }
}

将以下内容添加到您的 main.ts 文件中

app.use('/static', express.static(__dirname + '/public'));

packages/[你的应用程序]/src/public/some-file.txt中的文件将会在以下位置可用:

http://localhost:3333/static/some-file.txt

1

不确定您是否已经解决了这个问题,但我刚遇到了同样的问题。

当您使用Nx服务于Express应用程序时,它将被转译并从dist文件夹中提供。因此,__dirname实际上将解析为您的monoreporoot/dist文件夹(即您的项目根目录/dist)。

如果像我一样,您尝试从src目录或类似目录中的静态文件夹中提供内容,则需要确保在服务Express应用程序时将其传输到dist文件夹中。

对我来说,这不是问题,因为我只是在开发过程中使用它作为临时上传文件夹,所以我手动在dist中创建了该文件夹。如果它与您的应用程序相关联,则您可能需要添加特定的mkdircp命令来确保文件/文件夹存在于构建中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接