如何将JavaScript文件导入angular2

如何将JavaScript文件导入angular2,javascript,angular,typescript,typescript-typings,Javascript,Angular,Typescript,Typescript Typings,我不知道如何将javascript文件导入angular2项目。这是一个文件,不是一个模块,是npm的一部分,我能找到的唯一的指示是使用npm,这不是一个选项在这里 我正在使用angular cli,在angular-cli.json文件中,我有: { "apps": [ "styles": [..], "scripts": ["../pathtomyjs/file.js"] ]} 我运行了ng build和ng serve,当我打开我的应用程序,查看web控制台并尝试引用js文件中

我不知道如何将javascript文件导入angular2项目。这是一个文件,不是一个模块,是npm的一部分,我能找到的唯一的指示是使用npm,这不是一个选项在这里

我正在使用angular cli,在angular-cli.json文件中,我有:

{
"apps": [
  "styles": [..],
  "scripts": ["../pathtomyjs/file.js"] 
]}
我运行了ng build和ng serve,当我打开我的应用程序,查看web控制台并尝试引用js文件中的函数时,我能够成功地做到这一点

在控制台中输入示例:

var test = MyObject; 
我得到test={}

然而,当我尝试这样做

let test = MyObject;
在我的component.ts文件中,我得到:

home.component.ts (10,11): Cannot find name 'MyObject'.)
不知道如何在Angular2中执行此操作


谢谢

它是第三方库吗?您必须让typescript编译器知道类型定义文件在哪里。通常,它会在
node\u modules/@types
文件夹下查找。例如,如果要使用
jQuery
,可以通过运行以下命令安装必要的类型定义文件:

npm install @types/jquery

我将我的
js
文件放入
app/assets/scripts
并将它们加载到
index.html
。这是针对
ionic2
/
angular2
项目的

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

声明var myFancyFunction

执行以下操作:

declare var MyObject: any;

let test = MyObject;
或:

我对此进行了深入研究:

这是一个很好的问题,我很高兴你问我这个问题,因为我希望在我第一次遇到这个小问题的时候我就有我要写的东西。这是一个typescript/javascript和网页包问题,而不是一个角度问题。我肯定正在计划尽快写一篇文章

您的场景: 你跑

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

    从“./../node_modules/mathjs/dist/math”导入{mathjs}”

  • 但您会收到一条错误消息,上面写着“set--allowJS”。
  • 您可以这样做:

    Set——配置中的allowJS(tsconfig.json)
    {“编译器选项”:{
    “allowJs”:正确,…

  • 现在您可以:

  • ../node_modules/mathjs/dist/math.js(12209,13)中出错:无法访问 检测到代码

  • 查看math.js源代码,您会发现它是一个老式的模块,但没有根包装函数(一个函数可以将它们全部打包,并在黑暗中绑定它们……)(稍后将详细介绍)
  • 解决方案:为目标库安装打字文件(@types/mathjs)


    谢谢Dan,我结束了在ts文件中的导入语句下面放置declare var语句的过程,我尝试了let test=MyObject,但仍然出现了错误。将let更改为public仍然有效!是不是我做错了什么,导致声明为“let”不起作用?不管怎样,我只需要删除“let”在考试前,我不再需要“公开”。我在这里对此进行了深入研究:
    declare var jQuery: any;
    
    jQuery.ajax({ ... });
    
    npm install mathjs