我正在尝试使用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未捕获的ReferenceError:未定义require
在文件的第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>
我的typings文件夹中有lodash类型定义。我怎样才能确保Typescript可以找到这个lodash / index.d.ts文件?另外我如何修复“require is not defined”错误?
这是我的文件结构:
感谢您的帮助
答案 0 :(得分:0)
var _ = require("lodash");
对于加载脚本的方式没有必要。
在你的<head>
中,你有一行:
<script type="text/javascript" src="bower_components/lodash/dist/lodash.min.js"></script>
将_
加载到全局命名空间中。 require("lodash")
是一个在运行时加载lodash的模块加载器。
所以:
A)删除require
语句,只使用var _
,就像它已经加载一样(因为它已经加载)。您可能需要使用declare
关键字做一些棘手的事情,以使tsc
不抱怨_
未定义。
B)在<script>
中移除<head>
lodash并正确设置require
,以便知道"lodash"
是什么。否则,可能能够简单地执行var _ = require('bower_components/lodash/dist/lodash.min');