当前位置: 首页 > 知识库问答 >
问题:

“dist”文件夹中的模块解析

狄易安
2023-03-14

我正在开发一个NodeJS/TypeScript应用程序,我希望能够从dist/文件夹启动它。

每个src和dist文件夹的结构如下所示:

server/
|---dist/
|   |---server/
|       |---src/
|           |---index.js
|           |---utils/
|               |---connection.js
|---src/
|   |---index.ts
|   |---utils/
|       |---connection.ts
|
|---package.json
|---tsconfig.json

这个dist文件夹是生成的代码,这个路径是使用我的tsconfig.json文件中的outdir配置的。

我还将package.json中的main属性配置为dist/server/src/index.js,将type属性配置为module

在此项目中,我使用Typescript4.0.5

我已将tsconfig.json中的paths属性指定为“utils/*”:[“src/utils/*”],baseUrl属性指定为“./”,属性ModuleResolutionstrategy指定为Node

现在这是我的问题。我希望能够像在源代码中一样导入模块,但这次直接从dist文件夹中导入,如下所示:

import createConnection from 'utils/connexion';

但是,当我悬停在VScode中的导入声明时,它似乎无法解析模块,并且我得到一个错误错误[ERR_MODULE_NOT_FOUND]:无法找到从/home/maxime/dev/jeuxduplacard/packages/server/dist/server/src/index.js导入的包'utils'。

dist文件夹中的文件路径与Server文件夹中的文件路径相同。如果问题来自模块解析,是否有一种方法可以持久化dist文件夹中的路径别名(而不安装第三方库)?

{
    "compilerOptions": {
        "esModuleInterop": true,
        "target": "es2020",
        "moduleResolution": "node",
        "sourceMap": true,
        "baseUrl": "./",
        "outDir": "dist",
        "strict": true,
        "lib": ["ES2017", "ES2020"],
        "types": [
            "node"
        ],
        "allowSyntheticDefaultImports": true,
        "noImplicitAny": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "resolveJsonModule": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "incremental": true,
        "skipLibCheck": true,
        "strictPropertyInitialization": false,
        "paths": {
            "utils/*": ["src/utils/*"]
        }
    }
}

谢谢

共有1个答案

孙书
2023-03-14

是的,因为你不能从工作目录之外导入文件。您可以做的是,您可以链接一个本地模块,并像访问任何其他npm包一样访问它。

npm link (in package dir)
npm link [<@scope>/]<pkg>[@<version>]
alias: npm ln

https://docs.npmjs.com/cli/v6/commands/npm-link

 类似资料:
  • 问题内容: 给定这样的目录结构 我如何使用Python的 相对进口 到进口的?通过将其添加到路径中,可以得到一个可行的解决方案,但这很丑陋。有没有一种方法可以在Python 2.7中简单地处理一个? 这是此问题的更复杂版本: 从父文件夹导入模块 问题答案: 正确的相对导入为: 但是,相对进口仅在一个包装中起作用。如果是软件包,则可以在此处使用相对导入。如果不是包,则不能。 因此,如果您在中运行脚本

  • 我们有一个项目,我们建立与Gradle。我们使用IntelliJ作为我们的开发环境。我们有一些资源想要保存在JAR之外,所以我们将它们放在src/dist-文件夹中。这在从命令行运行应用程序时工作得很好,但当我们想从IntelliJ调试时就不那么好了。我们可以向src/dist放一个运行时依赖项,但是我们最终会在生成的ZIP文件中使用lib-folder中的文件,而这不是我们想要的。 看起来这个问

  • 问题内容: 我想将子文件夹导入为模块。因此,每个子文件夹都包含一个。我的文件夹结构是这样的: 在我的主脚本中,我导入 在此工厂文件中,我包括以下子模块: 如果我调用我的foofactory会收到错误消息,则该python无法导入子模块foo1和foo2: 问题答案: 无需与您或此处混淆。 为了在包中正确使用绝对导入,您还应该包括“ root”包名,例如: 或者您可以使用相对导入:

  • 我在C:/Users/user/AppData/Roaming/npm/node_modules路径中拥有所有节点模块。然后我尝试为我的脚本网页包含带有巴别塔和巴别塔预设的node_模块。 我的webpack.config.js 但巴贝尔并没有看到2015年。我也这么认为。 命令重新执行以下命令: 请帮忙。错在哪里?

  • 问题内容: 我正在运行Python 2.5。 这是我的文件夹树: (我还在每个文件夹中,为便于阅读,在此省略) 如何nib从模块内部导入life模块?我希望无需修补就可以做到。 注意:正在运行的主模块在ptdraft文件夹中。 问题答案: 看来问题与该模块位于父目录或类似目录中无关。 你需要将包含的目录添加到PYTHONPATH 你说过与你合作,这可能意味着你已将自身(而非其父项)添加到PYTHO