首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开玩笑的变压器不能用打字稿+ Webpack + PEGJS

开玩笑的变压器不能用打字稿+ Webpack + PEGJS
EN

Stack Overflow用户
提问于 2022-10-14 21:23:28
回答 1查看 21关注 0票数 0

我有一个国家预防机制项目:

代码语言:javascript
复制
{
  "scripts": {
    "test": "jest --config=jest.config.js"
  },
  "devDependencies": {
    "@types/pegjs": "0.10.3",
    "@types/jest": "29.1.1",
    "ts-loader": "9.3.1",
    "raw-loader": "4.0.2",
    "typescript": "4.8.3",
    "webpack": "5.74.0",
    "webpack-cli": "4.10.0",
    "jest": "29.1.2",
    "ts-jest": "29.0.3"
  },
  "dependencies": {
    "pegjs": "0.10.0"
  }
}

正如您所看到的,这个项目:

  • 有用TypeScript编写的源文件。
  • 用Webpack来捆绑。
  • 使用PegJS
  • 使用Jest进行测试。

结构:

代码语言:javascript
复制
myproj
|-src/
  |-grammar.pegjs
  |-index.ts
  |-index.test.ts
|-package.json
|-jest.config.js
|-transformer.js

运行测试

Jest将把.ts文件转换成Javascript。正如在文档中所解释的,我们需要处理使用Webpack导入静态资产的案例。在本例中,index.ts具有以下内容:

代码语言:javascript
复制
import pegjsgrammar from grammar

这需要处理。我正在为那个transformer.js创建一个转换器

代码语言:javascript
复制
const fs = require("fs");

module.exports = {
    process(sourceText, sourcePath, options) {
        const fileContents = fs.readFileSync(sourcePath, { encoding: "utf8" }).toString();
        const json = JSON.stringify(fileContents).replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029');

        return {
            code: `module.exports = ${json};`,
        };
    },
};

jest.config.js内部

代码语言:javascript
复制
module.exports = {
    preset: "ts-jest",

    transform: {
      "\\.tsx?$": "ts-jest",
      "\\.jsx?$": "babel-jest",
      "\\.pegjs$": "<rootDir>/pegjs_jest_transformer.js"
    },

    moduleFileExtensions: ["ts", "js", "pegjs"],
  };

错误

在运行我的测试时,我会得到错误,因为pegjsgrammarindex.ts中的值是undefined

EN

回答 1

Stack Overflow用户

发布于 2022-10-15 13:13:52

因此,问题在于保证不同模块之间的互操作性。为此,修改tsconfig.json以包括以下选项:

代码语言:javascript
复制
{
    "compilerOptions": {
        ...
        "esModuleInterop": true
    }
}

一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74075002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档