簡體   English   中英

Typescript 導入返回“找不到模塊”

[英]Typescript import returns “Cannot find module”

我正在嘗試將模塊導入為import Something from "@module" ,但它返回

找不到模塊“@config”

"@module" 是 "./src/utils/module" 的別名

“應用程序.ts”

import 'module-alias/register';

import Something from '@module';

“/utils/module.ts”

export enum Something {
    CONSTANT = 'constant'
}

“包.json”

{
  "name": "crawler",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "dev": "nodemon ./src/app.ts",
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/node": "^13.11.1",
    "nodemon": "^2.0.3",
    "ts-node": "^8.8.2",
    "typescript": "^3.8.3"
  },
  "dependencies": {
    "module-alias": "^2.2.2"
  },
  "_moduleAliases": {
    "@module": "./src/utils/module"
  }
}

“tsconfig.json”

{
  "compilerOptions": {
    "baseUrl": ".",
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "lib": [
      "es6"
    ],
    "outDir": "dist",
    "noEmitOnError": true,
    "sourceMap": true
  },
  "include": [
    "src/**/*.ts"
  ],
  "paths": {
    "@module": [
      "./src/utils/module"
    ]
  },
  "exclude": [
    "node_modules"
  ]
}

為什么import "@module"const Something = require('@module')工作正常,而import Something from "@module"返回找不到模塊錯誤?

這是項目結構:

- crawler
|-- src
    -- app.ts
    |-- utils
        -- module.ts

"paths"應該在"compilerOptions"部分,而不是在tsconfig.json的根目錄中

有關路徑映射的更多信息在這里

tsconfig.json的概述在這里

我有一個與“時刻”類似的問題,我有如下導入,它確實有效。

import * as moment from 'moment';

請注意,在通過這種方式導入 moment 進行開發時,導入看起來不錯,但是在進行 prod 編譯時可能會出現 AOT 錯誤,例如“無法使用引用”或類似的東西。 為了不詳細說明,這與一些 CommonJS 模塊有關(據我所知)。 Moment 很受歡迎,所以它似乎出現了很多。

為了解決這個問題(我在幾周前遇到了這個問題),請將“moment”設置為 const:

import * as moment from 'moment':

(later where you declare consts)

const _moment = moment;

然后在代碼中使用 _moment。

暫無
暫無

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

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