ng2-dragula看起来很酷,但我很难为我的Angular 2项目设置它。我使用 system.js
作为模块预加载器,其配置为:
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
},
'ng2-bootstrap': {},
'ng2-dragula': { defaultExtension: 'js' }
},
map: {
'dragula': 'node_modules/dragula',
'ng2-bootstrap': 'node_modules/ng2-bootstrap',
'ng2-dragula': 'node_modules/ng2-dragula',
'moment': 'node_modules/moment/moment.js'
}
});
我的tsconfig.json
:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"watch": true
}
}
我按如下方式将其加载到我的组件中:
import {DragulaService, Dragula} from 'ng2-dragula/ng2-dragula'
@Component({
selector: 'my-cmp',
viewProviders: [DragulaService],
})
@View({
template: '<div>Hey</div>',
directives: [Dragula]
})
我做错了什么,以至于我在浏览器中收到以下错误:
Error: require is not a function(…) angular2-polyfills.js:1243
您可能正在加载一些通过<script src="some-module.js">
标签编译为commonjs
模块的脚本。您应该使用System.import("some-module.js")
删除它们。有关类似问题的解释,请参阅此答案。