简体   繁体   English

LernaJs tsc 找不到模块

[英]LernaJs tsc Cannot find module

I am creating a full-stack monorepo project using lerna.我正在使用 lerna 创建一个全栈 monorepo 项目。

In one of the sub-project I got Cannot find module '@gepick/database/connect' .在其中一个子项目中,我得到了Cannot find module '@gepick/database/connect'

my lerna.json我的 lerna.json

{
  "packages": ["packages/*", "projects/**"],
  "version": "0.0.0",
  "useWorkspaces": true,
  "npmClient": "yarn"
}

my gepick/database/package.json:我的 gepick/数据库/package.json:

{
  "name": "@gepick/database",
  "version": "1.0.0",
  "devDependencies": {
    "@types/lodash": "^4.14.149",
    "@types/mongoose": "^5.7.11",
    "source-map-loader": "^0.2.4"
  },
  "dependencies": {
    "lodash": "^4.17.15",
    "mongodb-client-encryption": "^1.0.1",
    "mongoose": "^5.9.9"
  }
}

node based subproject package.json基于节点的子项目 package.json

{
  "name": "scripts-api-football",
  "version": "1.0.0",
  "scripts": {
    "start:collectDayMatches:dev": "tsc-watch --onSuccess \"node -r source-map-support/register build/collectDayMatches.js\"",
    "build": "tsc"
  },
  "devDependencies": {
    "@types/lodash": "^4.14.149",
    "source-map-loader": "^0.2.4",
    "source-map-support": "^0.5.19",
    "tsc-watch": "^4.2.3"
  },
  "dependencies": {
    "@gepick/database": "^1.0.0",
    "axios": "^0.19.2",
    "commander": "^5.0.0",
    "lodash": "^4.17.15",
    "nodemon": "^2.0.3"
  }
}

node based subproject tsconfig.json基于节点的子项目 tsconfig.json

{
  "compilerOptions": {
    "target": "es2019",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "strict": true,
    "inlineSourceMap": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "strictNullChecks": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "allowJs": false,
    "lib": ["es2016", "esnext.asynciterable", "webworker"],
    "types": ["node"],
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strictPropertyInitialization": false,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "forceConsistentCasingInFileNames": true,
    "baseUrl": "./src",
    "paths": {
      "utils/*": ["./utils/*"]
    }
  },
  "exclude": ["tests", "tasks"]
}

main package.json:主要 package.json:

{
  "name": "gepick-lerna",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "start:front-web": "lerna run start --scope front-web --stream",
    "bootstrap": "lerna bootstrap",
    "build:scripts:api-football": "lerna run build --scope scripts-api-football --stream",
    "start:scripts:api-football:start:collectDayMatches:dev": "lerna run start:collectDayMatches:dev --stream"
  },
  "dependencies": {
    "lerna": "^3.20.2",
    "typescript": "^3.8.3",
    "webpack": "^4.42.1"
  },
  "workspaces": [
    "projects/**",
    "packages/*"
  ],
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^2.27.0",
    "@typescript-eslint/parser": "^2.27.0",
    "eslint": "^6.8.0",
    "eslint-plugin-import": "^2.20.2",
    "eslint-plugin-jsx-a11y": "^6.2.3",
    "eslint-plugin-react": "^7.19.0",
    "eslint-plugin-react-hooks": "^2.5.1"
  }
}

Also, I tried to add main: "connect.js" to @gepick/datebase package.json file.另外,我尝试将main: "connect.js"添加到@gepick/datebase package.json 文件。 But looks like @gepick/datebase package don`t have compiled js.但看起来@gepick/datebase package 没有编译过 js。 Maybe it is issue (tsc not compiles library files)?也许是问题(tsc 不编译库文件)?

Problem was that packages were not compiled to js.问题是包没有编译成 js。 I changed node to ts-node for run script.我将node更改为ts-node以运行脚本。 Now it works.现在它起作用了。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM