을 구현하기 위해 노력하고 다음과 같은 모듈공식 수첩,나는 이 에러 메시지가 나타납니다:
포착되지 않는준:수출을 정의하지 않은
응용 프로그램에서.js:2
그러나 아무데도 나의 코드가 나는 이제까지 이름을 사용하여exports
.
어떻게 이 문제를 해결할 수 있을까요?
let a = 2;
let b:number = 3;
import Person = require ('./mods/module-1');
export class Person {
constructor(){
console.log('Person Class');
}
}
export default Person;
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": true,
"outDir": "scripts/"
},
"exclude": [
"node_modules"
]
}
몇 가지 다른 솔루션은 이 문제에 대한
-다음 줄을 추가하기 전에 다른 참조 자바 스크립트. 이것은 좋은 작은 해킹하는 것입니다.
<script>var exports = {};</script>
-이 문제가 발생합니다 최신 버전의 호환되지 않습니,이는 오류 제거할 수 있을 참조하여 타이프 라이터 버전 2.1.6
이 대답을 작동하지 않을 수 있습니다 따라 당신이'다시 표적으로 하지 않음es5
,더 이상 나는'll 만들려고 대답이 있습니다.
는 경우 CommonJS 아't 치(을 정의하는exports
),을 제거하는 이 라인에서tsconfig.json
:
"module": "commonjs",
따라멘트,혼자와 함께 작동하지 않을 수 있습이 이후 버전의tsc
. 는 경우,설치할 수 있는 모듈을 로더럼 CommonJS,SystemJS 또는 RequireJS 다음을 지정합니다.
보main.js
파일을tsc
생성됩니다. 당신이에서 최고:
Object.defineProperty(exports, "__esModule", { value: true });
그 루트,오류 메시지 및 제거한 후"module":"commonjs",
,그것은 사라질 것입니다.
나는 같은 문제를 해결하고 그것을 추가하면"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"
]
}
}
나는 이 같은 오류가 너무입니다. 내 경우에는 그것이 있었기 때문에 우리가 옛날 수입 문서의 타이프 라이터련 프로젝트는 다음과 같다:
import { IAttributes, IScope } from "angular";
는 컴파일한 자바 스크립트를 다음과 같다:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
이 필요했던 옛날에 다시기 때문에 우리는 그런 다음 사용IAttributes
코드와 호환되지 않습니지't 알고 있었고 그것으로 무엇을 할지 않습니다.
그러나 제거한 후에 가져오는 문,변환IAttributes
에서ng.IAttributes
그 두 JavaScript 선이 사라지고 이렇게 오류 메시지가 표시됩니다.
나를 위해 제거하는"esModuleInterop":true
에서 tsconfig.json 았습니다.
무엇을 시도@iFreilicht 제안했다. 는 경우에는't 업 후've 설치된 웹팩고 모든,당신은 수 있습니다 그냥 복사 웹팩 구성에서 어딘가에 온라인으로 구성이 원하는 출력을 지원하는 CommonJS 니다. 는지 확인 이건't 의 경우에webpack.config.js
:
모듈입니다.수출={ 모드:과정입니다.env.NODE_ENV||"development", 입력:{ 인덱스:"./src/js/index.ts" }, ... ... 출력:{ libraryTarget:'commonjs',<====삭제선 path:경로입니다.(가입하__dirname,'빌'), filename:"[name].니다.js" } };