如何使用在另一个工作区中声明的绝对路径 [已关闭]

How to use an absolute path declared in another workspace [closed]

提问人:Julien Diot-Dervaux 提问时间:11/15/2023 最后编辑:Julien Diot-Dervaux 更新时间:11/16/2023 访问量:40

问:


这个问题似乎与帮助中心定义的范围内的编程无关。

5天前关闭。

我的柏树有问题。

我有一个包含 3 个工作区的存储库,后端/通用/前端。

package/
  backend/
    jest.config.cjs
    tsconfig.json
    utils/
  common/
    jest.config.cjs
    tsconfig.json
    utils/
      helpers/
  frontend/
    cypress.config.ts
    tsconfig.json
    utils/

在工作区公共空间中,我创建了绝对路径。

  • 后端

package.json

"dependencies": {
    "@package-common": "workspace:^",
}

jest.config.cjs

module.exports = {
  ...
  moduleNameMapper: {
    '@utilsCommon/(.*)$': '@package-common/utils/$1',
  },
};
  • 常见

jest.config.cjs

module.exports = {
  ...
  moduleNameMapper: {
    '@utilsCommon/(.*)$': '<rootDir>/utils/$1',
  },
};

tsconfig.json

{
  ...
  "compilerOptions": {
    ...
    "baseUrl": "./",
    "paths": {
      "@utilsCommon/*": ["utils/*"]
    }
  },
}

  • 前端

package.json

"dependencies": {
    "@package-common": "workspace:^",
}

cypress.config.ts

on(
    'file:preprocessor',
    webpack({
      webpackOptions: {
        resolve: {
          ...
          alias: {
            '@utilsCommon': resolve(__dirname, '../common/utils'),
          },
        },

当我通过 Cypress 或 Jest 运行测试时,它找不到通过我的公共包中文件中的别名导入的函数。

./common/utils/services/http.service.ts

import {
  getUrlApiFhirStaging,
} from '@utilsCommon/helpers';

在此处输入图像描述 在此处输入图像描述

我尝试修改cypress.config.ts文件,但没有成功。

cypress.config.ts

on(
    'file:preprocessor',
    webpack({
      webpackOptions: {
        resolve: {
          ...
          alias: {
            '@utilsCommon': resolve('@package-common/utils'),
          },
        },
打字稿 jestjs cypress

评论

2赞 T Klugg 11/17/2023
请添加详细信息。@utilsCommon/helpers

答:

3赞 TesterDick 11/16/2023 #1

问题不在于您的别名(至少第一个)工作正常

on(
    'file:preprocessor',
    webpack({
      webpackOptions: {
        resolve: {
          ...
          alias: {
            '@utilsCommon': resolve(__dirname, '../common/utils'),
          },
        },

问题出在您的导出(或导入)上。

如果我在 中使用命名导出,它可以工作helper

export const getUrlApiFhirStaging = () => 'surprise'

如果我更改为默认导出

const getUrlApiFhirStaging = () => 'surprise'
export default getUrlApiFhirStaging

我收到错误

(0 , utilsCommon_helpers__WEBPACK_IMPORTED_MODULE_1_.getUrlApiFhirStaging) 不是一个函数

相反,如果我将导入更改为

import getUrlApiFhirStaging from '@utilsCommon/helpers';

错误消失。

评论

0赞 Julien Diot-Dervaux 11/16/2023
事实上,问题不一定出在绝对路径上。我会继续调查。感谢您的反馈。