1

我试图在使用angular/universal-starter(TypeScript 2.x)作为主干的项目中使用ng2-selectReferenceError:MouseEvent未定义

(我尝试添加NG2选在角CLI生成的项目,它工作得很好,虽然)

只需添加这两条线后:

import { SELECT_DIRECTIVES } from 'ng2-select/ng2-select'; 

@Component({ 
    directives: [SELECT_DIRECTIVES], 
    ... 

我已经得到了错误在我的终端:

ReferenceError: MouseEvent is not defined 
    at /my-project/node_modules/ng2-select/components/select/off-click.js:33:42 
    at Object.<anonymous> (/my-project/node_modules/ng2-select/components/select/off-click.js:43:2) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
    at Function.Module._load (module.js:409:3) 
    at Module.require (module.js:468:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/my-project/node_modules/ng2-select/components/select/select.js:20:19) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
    at Function.Module._load (module.js:409:3) 
    at Module.require (module.js:468:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (/my-project/node_modules/ng2-select/components/select.js:2:16) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
[nodemon] app crashed - waiting for file changes before starting... 

这是我tsconfig.json文件:

{ 
    "compilerOptions": { 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "target": "es5", 
    "module": "commonjs", 
    "removeComments": true, 
    "sourceMap": true, 
    "lib": ["es6", "dom"] 
    }, 
    "include": [ 
    "node_modules/@types/**/*.d.ts", 
    "src/**/*.ts" 
    ], 
    "exclude": [ 
    "node_modules", 
    "!node_modules/@types/**/*.d.ts" 
    ], 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { 
    "rewriteTsconfig": false 
    } 
} 

回答

0

我想这个错误是由于指令加载不正确而引起的。

1)确保正确的组件正在导入,并验证是否MouseEvent定义

2)验证是否已出口所有组件;

3)

@Component({ 
    directives: [SELECT_DIRECTIVES], 
    ... 

确保SELECT_DIRECTIVES不是数组对象。如果是这样,我想你应该尝试使用

[ ...SELECT_DIRECTIVES ]

+0

感谢,但还是同样的错误。请注意'MouseEvent'位于** node_modules **文件夹内。它在我生成的angular-cli项目中效果很好。我想这与** tsconfig.json **有关 –

-1

我发现了这个问题的临时解决方案。我把文本替换插件正则表达式替换装载机到的WebPack配置:

module: { rules: [ { test: /\.(ts|js)$/, loader: 'regexp-replace-loader', options: { match: { pattern: '\\[(Mouse|Keyboard)Event\\]', flags: 'g' }, replaceWith: '[]', } }, { test: /\.ts$/, loader: 'ts-loader' }, ] },