我在我的项目(like this)中有一个angular2应用程序示例,其中包含typescript,但没有所有node_modules 。必要的文件嵌入在head
index.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.0/es6-shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.16/system-polyfills.js"></script>
<script src="https://npmcdn.com/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.13/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.13/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.13/angular2.dev.js"></script>
的{{1}}中:
node.js
由于我想预先编译我的打字稿文件,我安装了tsc
和assets/js
。我的编辑器(PHPStorm 2016.1)会根据tsconfig.json
中的定义自动将文件编译为{
"compilerOptions": {
"target": "es5",
"module": "system",
"declaration": true,
"noImplicitAny": false,
"preserveConstEnums": true,
"removeComments": true,
"outDir": "../assets/js",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"emitBOM": true,
"moduleResolution": "node"
}
}
:
System.config({
packages: {
'assets/js': {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import( 'assets/js/main' ).then( null, console.error.bind( console ) );
应用程序加载了(as described in example 1 here):
error TS2307: Cannot find module 'angular2/core'
在编译时,我总是得到(某种经典)错误
typings install angular --ambient
PHPStorm告诉我它无法解决导入问题:
即使加载了所有外部库:
但是在编译之后(即使出现上述错误)应用程序在浏览器中运行良好。
可能缺少Typescript Definition(TSD)(),但不推荐使用tsd。我读到了$.ajax({
type: "POST",
data: {
'id': id
},
url: 'http::/localhost/my_project/controller/method',
success: function(data) {
swal({
title: "Deleted",
text: "The list has been deleted.",
type: "success"
},
function(){
location.reload();
});
},
error: function(data) {
swal("We cannot delete!", "The file is not deleted.", "error");
}
});
,但我不确定这是否真的有必要(并且它会抛出一堆其他错误link here)。
所以我的问题:
这只是我的设置的副作用(没有node_modules)我可以忽略,还是我必须安装其他东西?
我的环境:
我有点失落。任何提示都将不胜感激。
答案 0 :(得分:1)
您遇到问题,因为TypeScript编译器可以找到Angular2 .d.ts
文件。使用NPM安装Angular2时会提供它们(请参阅文件夹.d.ts
下的文件node_modules/angular2
)。
在module
文件中设置tsconfig.json
属性时,编译器会尝试在node_modules
文件夹中找到它们。
您可以注意到在编译源代码时这是一个问题,但是这段代码将被编译,您的应用程序可以运行...
有类似typings和tsd(不建议使用)的工具可以手动安装这些类型,但Angular2并不存在于相应的注册表中。