Typescript, Webpack, angular: Uncaught TypeError: Object (…) не является функцией - PullRequest
0 голосов
/ 17 июня 2019

Я начинаю с машинописного текста и углового, и мне нужно создать определение типа для пользовательской библиотеки. Когда я запускаю приложение, я вижу, что javascript моей внешней библиотеки присутствует в ресурсах и загружен (проверено через консоль), но при вызове моего машинописного кода я получил эту ошибку: ERROR TypeError: Object(...) is not a function. Кажется, я что-то упустил, мой index.d.ts находится в той же папке, что и мой index.js,

app.component.html

<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
  <h1>
    Welcome to {{ title }}!
  </h1>
<input value="open editor" type="button" (click)="openEditor()"/>
<router-outlet></router-outlet>

app.component.ts

import { Component } from '@angular/core';
import {createEditor, Editor} from "editor";
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'my-app';

  openEditor() {
        console.log(new Editor());
        console.log(createEditor());
  }
}

package.json

  "name": "editor",
  "version": "1.0.0",
  "description": "editor",
  "main":"index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "private": false,
  "publishConfig": {
    "registry": "http://localhost:4873"
  },
  "keywords": [
    "editor"
  ],
  "devDependencies": {
    "css-loader": "^3.0.0",
    "csv-loader": "^3.0.2",
    "file-loader": "^4.0.0",
    "style-loader": "^0.23.1",
    "webpack": "^4.33.0",
    "webpack-cli": "^3.3.4",
    "xml-loader": "^1.2.1"
  },
  "files": [ "index.js","index.d.ts"]
}

index.js

Editor = function(){
    alert("hello");
};
createEditor = function(){
    alert("hi");
};

index.d.ts

export function createEditor():void;
export class Editor {
    constructor();
}

Я упростил свой код, так как увидел, что угловой импорт в моем компоненте правильно помещает js в dom, но не удается, когда он вызывает код машинописного текста. Поэтому у меня есть сильное чувство, что я упускаю важный момент в моем определении типа. Возможно, это что-то глупое, что я не смог увидеть (как я уже сказал, я новичок в машинописи, угловой)

любая идея приветствуется,

Заранее спасибо

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, что нашел решение. Кажется, проблема была в файле js, в файле js отсутствовали декларации экспорта:

module.exports = {createEditor,Editor};

Поэтому, когда веб-пакет пытался загрузить связанный импорт, егозагружался неправильно.

...