问题 如何将JavaScript文件导入angular2


我无法弄清楚如何将javascript文件导入我的angular2项目。它是一个不是npm的模块的文件,我能找到的唯一指令是使用npm,这不是一个选项。

我使用的是角度cli,在我的angular-cli.json文件中,我有:

{
"apps": [
  "styles": [..],
  "scripts": ["../pathtomyjs/file.js"] 
]}

我运行构建和ng服务,当我打开我的应用程序并查看Web控制台并尝试引用我的js文件中的函数时,我能够成功完成。

我键入的控制台中的示例:

var test = MyObject; 

我得到test = {};

但是,当我尝试做的时候

let test = MyObject;

在我的组件.ts文件中,我得到:

home.component.ts (10,11): Cannot find name 'MyObject'.)

不知道如何在Angular2中这样做。

谢谢!


6180
2018-02-27 06:11


起源

我在这里深入探讨了这个问题: 这里 - Richard Strickland


答案:


做:

declare var MyObject: any;

let test = MyObject;

要么:

let test = (<any> MyObject);

对于jQuery:

declare var jQuery: any;

jQuery.ajax({ ... });

8
2018-02-27 20:15



谢谢Dan,我结束了将declare var语句放在我的ts文件中的import语句下面,我试着让test = MyObject,但我仍然收到错误。改变让公众工作了!有没有我做错了,宣称“让”不起作用? - Kevin Sar
没关系,我只需要在测试前放下“让”,我不再需要“公开”。 - Kevin Sar


它是第三方图书馆吗?你必须让打字稿编译器知道类型定义文件的位置。通常,它看起来不足 node_modules/@types 夹。例如,如果您想使用 jQuery,您将通过运行以下命令安装必要的类型定义文件:

npm install @types/jquery

2
2018-02-27 06:17





我把我的 js 文件到 app/assets/scripts 并加载它们 index.html <script src="assets/scripts/foobar.js"></script> 。这是为了 ionic2 / angular2 项目。

在模块中,您必须在模块文件的全局范围内定义这样的函数

declare var myFancyFunction;


0
2018-02-27 06:26





我对此深入了解 这里

这是一个很好的问题,我很高兴你问,因为我希望我第一次遇到这个小问题的时候就有了我要写的内容。这是一个打字稿/ javascript和webpack问题,然后才会出现角度问题。我当然正计划写一篇文章 我的博客 尽快。

您的场景:

你跑

npm install mathjs
  1. 现在您尝试使用组件中的math.js:
  2. 找到math.js dist js文件(node_modules / mathjs / dist / math.js)并像这样引用

    import {mathjs} from "../../node_modules/mathjs/dist/math";

  3. 但是你收到错误消息说 "set --allowJS".  你这样做:

    Set --allowJS in config (tsconfig.json) { "compilerOptions": { "allowJs": true, ...

  4. 现在你得到:

错误在../node_modules/mathjs/dist/math.js(12209,13):无法访问   检测到代码。

  1. 查看math.js源代码,您会看到它是一个旧的学校模块,但是没有根包装函数(一个函数可以将它们全部带到黑暗中并绑定它们。)(稍后会详细介绍)。

:为目标库安装一个打包文件(@ types / mathjs)

阅读更多...


0
2017-08-11 12:22