【问题标题】:How to set an Alias in AVA tests如何在 AVA 测试中设置别名
【发布时间】:2019-11-21 11:00:47
【问题描述】:

我正在尝试在不使用 Webpack、Babel 等的情况下在我的项目中全局设置别名。现在我使用 AVA 进行了一个简单的测试。

我正在使用 module-alias npm 包,它让我在 package.json 中设置我的别名。但是,当我尝试使用基本 alias 文档创建一个简单的示例时,它找不到该文件:

Error: Cannot find module '@root/my-module.js'

您可以使用以下 3 个文件重现此示例:

package.json

{
  "name": "ava-alias",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "ava"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "ava": "^2.4.0",
    "esm": "^3.2.25",
    "module-alias": "^2.2.2"
  },
  "ava": {
    "require": [
      "esm",
      "module-alias"
    ]
  },
  "_moduleAliases": {
    "@root": "."
  }
}

test.js

require('module-alias/register')

import test from 'ava'
//import cube from './my-module.js'  // working
import cube from '@root/my-module.js' // not working

test('cube of 3 is 27', t => {
    t.is(cube(3), 27)
})

my-module.js

export default function cube(x) {
  return x * x * x
}

将这些文件保存到一个空文件夹,然后在终端的该路径中:npm i && npm run test

也许我缺少相同的基础知识,非常感谢您的时间和帮助!

【问题讨论】:

    标签: javascript npm alias package.json ava


    【解决方案1】:

    我遇到了同样的问题。 您可以通过在 Ava 配置中使用 module-alias/register 来解决此问题。

    您的 package.json 应如下所示:

    {
      "name": "ava-alias",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "ava"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "ava": "^2.4.0",
        "esm": "^3.2.25",
        "module-alias": "^2.2.2"
      },
      "ava": {
        "require": [
          "esm",
          "module-alias/register"
        ]
      },
      "_moduleAliases": {
        "@root": "."
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-16
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多