타이프 라이터준:수출을 정의하지 않은

을 구현하기 위해 노력하고 다음과 같은 모듈공식 수첩,나는 이 에러 메시지가 나타납니다:

포착되지 않는준:수출을 정의하지 않은

응용 프로그램에서.js:2

그러나 아무데도 나의 코드가 나는 이제까지 이름을 사용하여exports.

어떻게 이 문제를 해결할 수 있을까요?


app.ts

let a = 2;
let b:number = 3;

import Person = require ('./mods/module-1');

module-1.t

 export class Person {
  constructor(){
    console.log('Person Class');
  }
}
export default Person;

tsconfig.json

{
   "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": true,
        "outDir": "scripts/"
    },
    "exclude": [
        "node_modules"
    ]
}
질문에 대한 의견 (6)

몇 가지 다른 솔루션은 이 문제에 대한

-다음 줄을 추가하기 전에 다른 참조 자바 스크립트. 이것은 좋은 작은 해킹하는 것입니다.

   <script>var exports = {};</script>

-이 문제가 발생합니다 최신 버전의 호환되지 않습니,이는 오류 제거할 수 있을 참조하여 타이프 라이터 버전 2.1.6

해설 (2)
해결책

편집:

이 대답을 작동하지 않을 수 있습니다 따라 당신이'다시 표적으로 하지 않음es5,더 이상 나는'll 만들려고 대답이 있습니다.

응답 원

는 경우 CommonJS 아't 치(을 정의하는exports),을 제거하는 이 라인에서tsconfig.json:

 "module": "commonjs",

따라멘트,혼자와 함께 작동하지 않을 수 있습이 이후 버전의tsc. 는 경우,설치할 수 있는 모듈을 로더럼 CommonJS,SystemJS 또는 RequireJS 다음을 지정합니다.

주의:

main.js파일을tsc생성됩니다. 당신이에서 최고:

Object.defineProperty(exports, "__esModule", { value: true });

그 루트,오류 메시지 및 제거한 후"module":"commonjs",,그것은 사라질 것입니다.

해설 (18)

npm@babel/플러그인-변환 모 commonjs

추가니다.babelrc 플러그인 해결되 나의 질문입니다.

해설 (0)

사람들을 위해 계속 이 문제는 경우,귀하의 컴파일러를 대상으로 설정 ES6 당신에게 말할 필요가 바벨을 건너 모듈을 변환합니다. 그렇게 이것을 추가한.babelrc파일

{
  "presets": [ ["env", {"modules": false} ]]
}
해설 (2)

나는 같은 문제를 해결하고 그것을 추가하면"es5"라이브러리를 tsconfig.json 다음과 같다:

{
    "compilerOptions": {
        "target": "es5", //defines what sort of code ts generates, es5 because it's what most browsers currently UNDERSTANDS.
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true, //for angular to be able to use metadata we specify in our components.
        "experimentalDecorators": true, //angular needs decorators like @Component, @Injectable, etc.
        "removeComments": false,
        "noImplicitAny": false,
        "lib": [
            "es2016",
            "dom",
            "es5"
        ]
    }
}
해설 (0)

나의 솔루션의 합계 최대의 모든 것 위에는 작은 마술을 추가,기본적으로 추가 이 html 코드 ``html <스크립트>var 수출={"__esModule":true};</스크립트>

<script src="js/파일입니다.js"> `` 이에도 사용할 수 있습`가져오는`대신에`필요한`경'다시 사용하여 전자거나 뭔가를,그것을 잘 작동으로 호환되지 않습니 3.5.1,대상:e s3->esnext.
해설 (0)

나는 이 같은 오류가 너무입니다. 내 경우에는 그것이 있었기 때문에 우리가 옛날 수입 문서의 타이프 라이터련 프로젝트는 다음과 같다:

import { IAttributes, IScope } from "angular";

는 컴파일한 자바 스크립트를 다음과 같다:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

이 필요했던 옛날에 다시기 때문에 우리는 그런 다음 사용IAttributes코드와 호환되지 않습니지't 알고 있었고 그것으로 무엇을 할지 않습니다. 그러나 제거한 후에 가져오는 문,변환IAttributes에서ng.IAttributes그 두 JavaScript 선이 사라지고 이렇게 오류 메시지가 표시됩니다.

해설 (4)

단순히libraryTarget:&#39;umd&#39;,이렇게

`` const webpackConfig={ 출력:{ libraryTarget:'umd'//수:"포착되지 않는준:수출을 정의하지 않". } };

모듈입니다.수출=webpackConfig;//내보내기를 모든 사용자 정의 웹팩 configs. ``

해설 (0)

나를 위해 제거하는"esModuleInterop":true에서 tsconfig.json 았습니다.

해설 (0)

이 설정하여 고정하는모듈컴파일러 옵션을es6:

json { "compilerOptions":{ "module":"es6", "target":"es5", } }

해설 (0)

부 ASP.NET 프로젝트를 가져 오기 및 내보내기 사용할 수 없습니다 모두에서의 타이프 친.

질문's 러가 나타났을 때 나가도 이렇게 나만 나중에 발견하는 데 필요한 추가 생성되 JS 스크립트를 View 그래서 다음과 같:

<script src="~/scripts/js/[GENERATED_FILE].Index.js" asp-append-version="true"></script>
해설 (0)

무엇을 시도@iFreilicht 제안했다. 는 경우에는't 업 후've 설치된 웹팩고 모든,당신은 수 있습니다 그냥 복사 웹팩 구성에서 어딘가에 온라인으로 구성이 원하는 출력을 지원하는 CommonJS 니다. 는지 확인 이건't 의 경우에webpack.config.js: 모듈입니다.수출={ 모드:과정입니다.env.NODE_ENV||"development", 입력:{ 인덱스:"./src/js/index.ts" }, ... ... 출력:{ libraryTarget:&#39;commonjs&#39;,&lt====삭제선 path:경로입니다.(가입하__dirname,&#39;빌&#39;), filename:"[name].니다.js" } };

해설 (0)

동일한 문제와 고정된 그것을 변경하여 JS 패키지령입니다.

을 확인하는 순서 필요한 패키지를 호출되고 있음을 로드하는 적절한다.

에 특정한 경우(사용하지 않는 모듈은 번들러)내가 필요로드돌아오는다음돌아오는 썽다음반응하는 돌아오는. 드 반응하는 돌아오는앞에돌아오는 썽수출을 정의하지 않은`.

해설 (0)