【问题标题】:File ‘../foo.ts’ is not under rootDir. rootDir is expected to contain all source files文件 ‘../foo.ts’ 不在 rootDir 下。 rootDir 应包含所有源文件
【发布时间】:2019-10-25 17:03:23
【问题描述】:

我有一个由 3 个 api 组成的无服务器应用程序。他们共享大量代码。我准备了整个应用程序,它允许我单独启动每个 api 或同时启动它们中的每一个,这取决于我当时的需求。有一些脚本可以单独部署 API,也可以一次性部署。

这里的问题是共享代码。由于它是共享的,我需要通过所有 api 复制它们以保持一切顺利运行,因为我不能在任何 api 之外拥有包含该代码的文件夹。它抛出了我在标题中输入的错误。

我的文件夹结构是这样的:

src
|- api1
   |- serverless.yml (for api1)
|- api2
   |- serverless.yml (for api2)
|- api3
   |-serverless.yml (for api3)
|- common_code_1
|- common_code_2

我在 tsconfig.json 中将这 2 个文件夹注册为路径,但它还是会抛出错误。如何在不重复的情况下在 api 之间共享此代码?

【问题讨论】:

    标签: serverless-framework


    【解决方案1】:

    如果你使用 npm,我建议在 common_code_1common_code_2 中创建一个 package.json 文件。

    然后您可以简单地在api1package.json 文件中使用相对路径来要求它们:

      "name": "api1",
      "dependencies": {
        "common_code_1": "file:../common_code_1",
        "common_code_2": "file:../common_code_2",
        ...
      }
    

    然后,Serverless Framework 将在打包您的应用程序以进行部署时解析这些包。

    【讨论】:

    • 虽然是个好主意,但行不通。该项目构建,但每次提到这些“模块”,打字稿构建器都会引发错误。即使抛出了这些错误,我还是尝试在 api 上请求一些东西,然后又抛出了一个错误。还有其他建议吗?
    • file:file:// 尝试过。两者都以完全相同的方式失败。
    • 我说的是离线提供文件,借助插件serverless-offline
    • 是的,我也在本地使用这个解决方案和 serverless-offline,但我没有在这个项目中使用 typescript。你能分享你收到的错误吗?
    • 在构建时,对于每个模块导入,我都会得到以下之一:handlers/someEndpoint.ts (1,57): Cannot find module 'common_code_1'. 当我请求某些内容时,我会得到其中之一:Error: Cannot find module 'common_code_1'
    猜你喜欢
    • 2019-12-16
    • 2019-01-21
    • 2018-12-06
    • 2018-06-19
    • 2021-09-16
    • 1970-01-01
    • 2020-07-10
    • 2019-04-12
    • 1970-01-01
    相关资源
    最近更新 更多