Javascript 使用HTML运行JSHint并获取错误
我是JSHint的新手,尝试运行它来验证我的Javascript。我已经安装了node.js,当我尝试运行JSHint时,我得到下面的错误Javascript 使用HTML运行JSHint并获取错误,javascript,jshint,Javascript,Jshint,我是JSHint的新手,尝试运行它来验证我的Javascript。我已经安装了node.js,当我尝试运行JSHint时,我得到下面的错误 C:\Users\574839\Desktop\testscr.js:1 (function (exports, require, module, __filename, __dirname) { <!DOCTYPE html> ^
C:\Users\574839\Desktop\testscr.js:1
(function (exports, require, module, __filename, __dirname) { <!DOCTYPE html>
^
SyntaxError: Unexpected token <
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:456:3
有人能告诉我为什么会出错吗
下面是我的JS代码
<!DOCTYPE html>
<html>
<body>
<h1>What Can JavaScript Do?</h1>
<p id="demo">JavaScript can change HTML content.</p>
<button type="button" onclick="document.getElementById('demo').innerHTML='Hello JavaScript!'">Click Me!</button>
</body>
</html>
JavaScript能做什么?
JavaScript可以更改HTML内容
点击我!
这是一个HTML文件,而不是JavaScript文件。但幸运的是,如果您将--extract选项传递给JSHint,它可以处理HTML文件中的javascript
从:
--extract=[auto | always | never]
告诉JSHint在linting之前从HTML文件中提取JavaScript:
tmp☭ cat test.html
你好,世界!
函数hello(){
返回“你好,世界!”;
}
你好,世界!
log(hello())
tmp☭ jshint--extract=auto test.html
test.html:第13行,第27列,缺少分号。
1错误
如果将其设置为always,JSHint将始终尝试提取
JavaScript。如果您将其设置为“自动”,它将只进行尝试
如果文件看起来像一个HTML文件
同时,它仍然无法识别HTML属性事件处理程序(如本例中的onclick)中的javascript,这是一种糟糕的做法。如果你真的想让你的Javascript变成HTML,你可以把它放在如下的脚本标签中:
testscr.html:
<!DOCTYPE html>
<html>
<body>
<h1>What Can JavaScript Do?</h1>
<p id="demo">JavaScript can change HTML content.</p>
<button type="button" onclick="sayHello()">Click Me!</button>
<script>
function sayHello() {
document.getElementById('demo').innerHTML='Hello JavaScript!';
}
</script>
</body>
</html>
JavaScript能做什么?
JavaScript可以更改HTML内容
点击我!
函数sayHello(){
document.getElementById('demo').innerHTML='Hello JavaScript!';
}
另外,看起来您正在将它传递给node,比如
node testscr.js
,但是您应该做的是将它传递给jshint:jshint--extract=always testscr.js
有没有办法告诉jshint从HTML中提取js并只测试js?谢谢Farid!最后一个问题。除了在控制台中显示错误/警告外,它是否还会生成类似于日志文件的文件?我不确定在哪里可以找到测试的输出。把我说的话记下来,再看看答案。我更新了它。如果您希望输出在一个文件中,只需通过管道传输:jshint--extract=always testscr.js>output.txt
在何处设置标志以仅检查.jshint文件中的js文件?@Flash现在不可能。但是有一个文件,所以你可以在那里追踪。
tmp ☭ cat test.html
<html>
<head>
<title>Hello, World!</title>
<script>
function hello() {
return "Hello, World!";
}
</script>
</head>
<body>
<h1>Hello, World!</h1>
<script>
console.log(hello())
</script>
</body>
</html>
tmp ☭ jshint --extract=auto test.html
test.html: line 13, col 27, Missing semicolon.
1 error
<!DOCTYPE html>
<html>
<body>
<h1>What Can JavaScript Do?</h1>
<p id="demo">JavaScript can change HTML content.</p>
<button type="button" onclick="sayHello()">Click Me!</button>
<script>
function sayHello() {
document.getElementById('demo').innerHTML='Hello JavaScript!';
}
</script>
</body>
</html>