Visual Studio代码 - Node.js - 找不到名称' __ dirname'

时间:2016-03-17 20:58:03

标签: node.js macos visual-studio-code

前言我不是一个专业的程序员,但是在我发现我接受了#34;网页设计"后,我开始为我的老板建立一个网站。在10年前的高中。当时静态网站很好,而且CSS开始显示它的潜力,但我离题了。

我现在正在使用Visual Studio Code上的Node.js项目并且有一个奇怪的例外。代码工作正常,但我想这只是好奇心。无论如何,这是我的代码。

app.js

var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
multer = require('multer'),
controller = require('./controllers');

//Sets the view engine to jade.
app.set('views', __dirname + '/frontend');
app.set('view engine', 'jade');

//sets up the development enviroment
if (app.get('env') === 'development') {
  app.locals.pretty = true;
  app.use(express.static(__dirname + '/build/public'))
  var build = require(__dirname + '/build.js');
  app.use('css/*', function(req, res, next){
    build.style();
    next();
  });
}

//Sets up the public directory to serve static files - This will be depricated quite soon...
//app.use(express.static(__dirname + '/public'));

//Initalizes site-wide local variables
//app.set('title', 'Halvorson Homes');

//Sets up body-parser to be able to read RESTful requests
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(multer({dest: 'tmp'}).fields());

//Load Controllers
app.use( '/' , controller);


//makes the app listen on port 3000
app.listen(3000, function() {
  console.log('Listening on port 3000...');
})

我的文件夹结构大致如下

  • 控制器
    • index.js
    • designs.js
  • 模型
    • designs.js
  • 前端
    • 共同
      • layout.jade
      • header.jade
      • footer.jade
      • client.js
      • style.less
    • 索引
      • index.jade
      • client.js
      • style.less
    • 设计
      • index.jade
      • client.js
      • style.less
  • 构建
    • TMP
    • SRV
  • app.js
  • build.js
  • 的package.json

根据VS Code的内置调试器,第8,14和15行有例外。他们是我在整个项目中使用__dirname的唯一地方。这对我来说很烦人,因为我太完美了。是节点,VS代码还是其他什么?

3 个答案:

答案 0 :(得分:4)

您收到的警告来自eslint extension。虽然它在Node.JS中可能有效,但它会警告您__dirname,因为它在所有JavaScript环境中都无效,例如在浏览器中。

要取消警告,您需要直接在项目的根目录中创建.eslintrc文件,并指示代码将在节点中运行,如下所示:

{
    "env": {
        "node": true
    }
}

您可以在此处查看用于为实际vscode代码库配置eslint的.eslint文件https://github.com/Microsoft/vscode/blob/master/.eslintrc

答案 1 :(得分:0)

晚会,但刚刚遇到同样的问题。对我来说,修复是添加节点类型,以便VSCode识别它们:

转到终端视图,然后输入以下内容: npm install @types/node --save-dev

然后点击Cmd + Shift + P(至少为Mac)打开VSCode命令搜索对话框,然后选择Reload Window

当它再次出现时,该错误以及任何其他与Node.JS内容无关的错误都应该消失。

答案 2 :(得分:0)

除了创建单独的 .eslintrc 文件之外,您还可以将其添加到 package.json 文件中。

docs 状态:

<块引用>

要在配置文件中指定环境,请使用 env 键并通过将 each 设置为 true 来指定要启用的环境。例如,以下启用浏览器和 Node.js 环境

{
    "name": "mypackage",
    "version": "0.0.1",
    "eslintConfig": {
        "env": {
            "browser": true,
            "node": true
        }
    }
}