Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HTML运行JSHint并获取错误_Javascript_Jshint - Fatal编程技术网

Javascript 使用HTML运行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> ^

我是JSHint的新手,尝试运行它来验证我的Javascript。我已经安装了node.js,当我尝试运行JSHint时,我得到下面的错误

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>