使用 typescript 和 npm 将外部组件导入到 angular2 quickstart 项目中
Importing external components into angular2 quickstart project with typescript and npm
我决定试用 angular2,并且在扩展 angular.io(alpha 44)提供的 quickstart in typescript 的同时,一直很享受使用它的乐趣。但是我似乎遇到了麻烦,我很难导入通过节点获得的新模块,更具体地说是 ng2-bootstrap 中的工具提示。我似乎无法 "get" quickstart 项目是如何一起工作的,即使我已经阅读了 systemjs,并尝试自己修修补补。我尝试了各种方法,但似乎总是在某处碰壁。
我通过以下方式导入了 ng2-bootstrap:
npm i ng2-bootstrap --save
随后在 app.ts 中使用导入和引用:
/// <reference path="../../node_modules/ng2-bootstrap/ng2-bootstrap.d.ts"/>
import {tooltip} from 'ng2-bootstrap'
但是它一直在 'src' 文件夹中查找,而在使用导入时它不会为 angular 组件执行此操作,为什么?谁能帮我理解事物是如何联系在一起的,以及我不理解的地方?
我在浏览器控制台中得到的错误是:
Failed to load resource: the server responded with a status of 404 (Not Found) http://127.0.0.1:8080/src/ng2-bootstrap
文件 "../../node_modules/ng2-bootstrap/ng2-bootstrap.d.ts
需要 declare module 'ng2-bootstrap'
如果没有,那么 import {tooltip} from 'ng2-bootstrap'
将是编译器错误(尽管您仍然可能获得有效的 JS)。
我昨天在导入 http 模块时遇到了类似的问题,只需要手动添加到我的 index.html:
<script src="../node_modules/angular2/bundles/http.dev.js"></script>
(当然你需要用你的模块替换http.dev.js)
希望对您有所帮助,如果没有,请见谅,我也是 angular2 的新手。
过了一会儿我又回到这个问题上,发现了这个:https://github.com/valor-software/ng2-bootstrap/issues/50#issuecomment-165448962
link 之后将展示如何在 angular2-beta0 快速入门中导入 ng2-bootstrap(或其他 npm 模块)。
如果您直接在浏览器中打开 http://127.0.0.1:8080/src/ng2-bootstrap
,您将看到它不是有效的 javascript 文件。根据项目中的路径,您可能会收到 40x HTTP 错误或 index.html 的内容。
因此,当 SystemJS 尝试加载 ng2-bootstrap.js 时,它 得到一个空文件或错误的 (html) 内容 并显示此错误消息:
"SyntaxError: expected expression, got '<'
Evaluating http: //localhost:8080/ng2-bootstrap/ng2-bootstrap
Error loading http: //localhost:8080/app/boot.js"
要解决这个问题,您需要告诉 SystemJS 如何加载 ng2-bootstrap.js。
如果您从 angular2 quickstart 开始,然后安装 bootstrap 和 'npm install ng2-bootstrap --save',这应该是您的配置:
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
"node_modules/ng2-bootstrap": {
format: 'register',
defaultExtension: 'js'
}
}
paths: {
"ng2-bootstrap/ng2-bootstrap": "node_modules/ng2-bootstrap/ng2-bootstrap"
}
});
我决定试用 angular2,并且在扩展 angular.io(alpha 44)提供的 quickstart in typescript 的同时,一直很享受使用它的乐趣。但是我似乎遇到了麻烦,我很难导入通过节点获得的新模块,更具体地说是 ng2-bootstrap 中的工具提示。我似乎无法 "get" quickstart 项目是如何一起工作的,即使我已经阅读了 systemjs,并尝试自己修修补补。我尝试了各种方法,但似乎总是在某处碰壁。
我通过以下方式导入了 ng2-bootstrap:
npm i ng2-bootstrap --save
随后在 app.ts 中使用导入和引用:
/// <reference path="../../node_modules/ng2-bootstrap/ng2-bootstrap.d.ts"/>
import {tooltip} from 'ng2-bootstrap'
但是它一直在 'src' 文件夹中查找,而在使用导入时它不会为 angular 组件执行此操作,为什么?谁能帮我理解事物是如何联系在一起的,以及我不理解的地方?
我在浏览器控制台中得到的错误是:
Failed to load resource: the server responded with a status of 404 (Not Found) http://127.0.0.1:8080/src/ng2-bootstrap
文件 "../../node_modules/ng2-bootstrap/ng2-bootstrap.d.ts
需要 declare module 'ng2-bootstrap'
如果没有,那么 import {tooltip} from 'ng2-bootstrap'
将是编译器错误(尽管您仍然可能获得有效的 JS)。
我昨天在导入 http 模块时遇到了类似的问题,只需要手动添加到我的 index.html:
<script src="../node_modules/angular2/bundles/http.dev.js"></script>
(当然你需要用你的模块替换http.dev.js)
希望对您有所帮助,如果没有,请见谅,我也是 angular2 的新手。
过了一会儿我又回到这个问题上,发现了这个:https://github.com/valor-software/ng2-bootstrap/issues/50#issuecomment-165448962
link 之后将展示如何在 angular2-beta0 快速入门中导入 ng2-bootstrap(或其他 npm 模块)。
如果您直接在浏览器中打开 http://127.0.0.1:8080/src/ng2-bootstrap
,您将看到它不是有效的 javascript 文件。根据项目中的路径,您可能会收到 40x HTTP 错误或 index.html 的内容。
因此,当 SystemJS 尝试加载 ng2-bootstrap.js 时,它 得到一个空文件或错误的 (html) 内容 并显示此错误消息:
"SyntaxError: expected expression, got '<'
Evaluating http: //localhost:8080/ng2-bootstrap/ng2-bootstrap
Error loading http: //localhost:8080/app/boot.js"
要解决这个问题,您需要告诉 SystemJS 如何加载 ng2-bootstrap.js。
如果您从 angular2 quickstart 开始,然后安装 bootstrap 和 'npm install ng2-bootstrap --save',这应该是您的配置:
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
"node_modules/ng2-bootstrap": {
format: 'register',
defaultExtension: 'js'
}
}
paths: {
"ng2-bootstrap/ng2-bootstrap": "node_modules/ng2-bootstrap/ng2-bootstrap"
}
});