Angular 4找不到名称错误

时间:2017-08-24 19:29:34

标签: angular jwt-simple

我正在使用jwt简单库:

https://www.npmjs.com/package/jwt-simple

在我的一个打字稿中,我有以下内容:

const jwt = require('jwt-simple');
const payload = { user: 'joesan' };
const secret = 'testtest';

现在,当我运行此应用程序时,它在具有require(...)的位置失败。它失败并显示以下消息:

Cannot find name 'require'.

关于问题可能是什么的任何想法?

2 个答案:

答案 0 :(得分:1)

请参阅此处 - nodejs require inside TypeScript file

Typescript没有使用CommonJS依赖导入方法,所以你必须稍微调整一下。

首先,您需要确保tsconfig.json flie中的allowJS选项设置为true。

{
    "compilerOptions": {
     ... 
    "allowJS": true,
     ...
     }
}

现在我从上面的链接中粘贴了最相关的答案

  

正确的语法是:

     

import sampleModule = require(' modulename');或

     

从' modulename'中导入*作为sampleModule;然后编译你的   TypeScript with --module commonjs。

     

如果软件包没有附带index.d.ts文件及其附件   package.json没有"打字"属性,tsc会吠叫它   我不知道' modulename'是指。为此你需要   在http://definitelytyped.org/上找到它的.d.ts文件,或者写一个   自己。

     

如果您正在为Node.js编写代码,您还需要node.d.ts   来自http://definitelytyped.org/的文件。

如果您正在使用角度CLI,您也可以尝试将其添加到'脚本' angular-cli.json中的参数

  },
  "apps": [
    {
      "main": "src/main.ts",
      "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css"
      ],
      "scripts": [   // HERE 
        "../node_modules/bootstrap/dist/js/bootstrap.min.js"
      ],
      "tsconfig": "src/tsconfig.json",
      "mobile": false
    }
  ],

答案 1 :(得分:0)

您可以尝试使用import jwt-simple代替require语句。