簡體   English   中英

LernaJs tsc 找不到模塊

[英]LernaJs tsc Cannot find module

我正在使用 lerna 創建一個全棧 monorepo 項目。

在其中一個子項目中,我得到了Cannot find module '@gepick/database/connect'

我的 lerna.json

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

我的 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"
  }
}

基於節點的子項目 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"
  }
}

基於節點的子項目 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"]
}

主要 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"
  }
}

另外,我嘗試將main: "connect.js"添加到@gepick/datebase package.json 文件。 但看起來@gepick/datebase package 沒有編譯過 js。 也許是問題(tsc 不編譯庫文件)?

問題是包沒有編譯成 js。 我將node更改為ts-node以運行腳本。 現在它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM