首页 > 解决方案 > 未找到模块 - 打字稿 cli

问题描述

这是我的项目:https ://github.com/CrunchyArtie/pile-de-la-honte-cli

当在本地(npm run devnpm i -g .)使用它时它正在工作,但是当我使用由它构建的存档npm pack或在发布后安装它时,它不起作用。

错误 :

internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module './models/questions/home.question'
Require stack:
- C:\Users\lundi\AppData\Roaming\npm\node_modules\pile-de-la-honte\dist\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (C:\Users\lundi\AppData\Roaming\npm\node_modules\pile-de-la-honte\dist\index.js:10:25)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\lundi\\AppData\\Roaming\\npm\\node_modules\\pile-de-la-honte\\dist\\index.js'
  ]
}

而 dist 文件夹只有容器index.js

我尝试添加到package.json

main: "dist/index.js",
bin: "dist/index.js"

这个 tsconfig :

"extends": "@tsconfig/recommended/tsconfig.json",
"include": [
    "src/**/*"
],
"exclude": [
    "node_modules",
    "**/*.spec.ts"
],
"compilerOptions": {
    "outDir": "dist",
    "lib": [
        "es6",
        "es2015",
        "dom",
        "es2019",
        "es2017",
        "es7"
    ],
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "rootDir": "src",
    "strict": true,
    "types": ["node"],
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "baseUrl": ".",
    "paths": {
        "./*": [
            "dist/*"
        ]
    }
}

标签: typescriptcommand-line-interface

解决方案


问题:.gitignore那里有文件dist夹。

解决方案 :

  1. 复制.gitignore,
  2. 将此新文件重命名为.npmignore,
  3. 打开.npmignore并删除关于dist文件夹的行。

为什么: Npm 将打包整个项目期望:

  • 如果没有.gitignoreor .npmignore,则什么都没有
  • .npmignore如果此文件存在,则列出的内容。
  • 如果此文件.gitignore存在但不存在.npmignore.

推荐阅读