【问题标题】:typescript + lodash - cannot find moduletypescript + lodash - 找不到模块
【发布时间】:2016-10-24 22:30:09
【问题描述】:

我正在尝试让 typescript 和 lodash 在我的应用程序中工作,但是当我运行时

tsc --module commonjs lodash-test.ts

我总是得到

lodash-test.ts(2,20):错误 TS2307:找不到模块“lodash”。

这仍然会产生一个 lodash-test.js 文件

"use strict";
//lodash test that will be injected in index.html
var _ = require("lodash");
console.log('This is your lodash ts file');
console.info(_.chunk(['a', 'b', 'c', 'd'], 2));

现在当我在浏览器中运行我的 index.html 文件时,我得到了

lodash-test.js:3 Uncaught ReferenceError: require is not defined

在文件的第 3 行。

Index.html 文件

<!DOCTYPE html>
<html>    
<head>
    <meta charset=utf-8 />
    <title></title>
    <script type="text/javascript" src="bower_components/lodash/dist/lodash.min.js"></script>
    <script type="text/javascript" src="lodash-test.js"></script>    
</head>    
<body>
    <h3>Hey</h3>
</body>    
</html>

我的类型文件夹中有 lodash 类型定义。如何确保 Typescript 可以找到这个 lodash/index.d.ts 文件?另外如何解决“require is not defined”错误?

这是我的文件结构:

感谢您的帮助

【问题讨论】:

  • 尝试在 TypeScript 文件的顶部使用 /// &lt;reference path="" /&gt; 命令导入 d.ts 类型文件。因为现在,tsc 已经知道你有打字文件。所以它找不到它。
  • @Blackus 我已将我的 lodash-test.ts 更改为 imgur.com/n8Kp5pv,它产生了图像右侧的内容。我还删除了 index.html 中的

标签: javascript typescript lodash


【解决方案1】:

var _ = require("lodash"); 不是您加载脚本所必需的。

在您的&lt;head&gt; 中,您有一行:

<script type="text/javascript" src="bower_components/lodash/dist/lodash.min.js"></script>

_ 加载到全局命名空间中。 require("lodash") 是一个在运行时加载 lodash 的模块加载器。

所以

A) 删除 require 语句并使用 var _ 就好像它已经加载(因为它是)。您可能需要使用 declare 关键字做一些棘手的事情才能让 tsc 不抱怨 _ 未定义。

B) 删除 &lt;head&gt; 中 lodash 的 &lt;script&gt; 并正确设置 require 以便它知道 "lodash" 是什么。否则,您可能能够简单地执行 var _ = require('bower_components/lodash/dist/lodash.min');

之类的操作

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2016-09-20
    • 2017-02-10
    • 2017-09-17
    相关资源
    最近更新 更多