nodeJs无法执行js文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodeJs无法执行js文件?相关的知识,希望对你有一定的参考价值。

如图,我是新手,问问大家报这个是什么原因?

参考技术A 在window平台,.js文件默认是cscript运行的。
你可以用node 空格 js文件名的方式用nodejs运行js文件,不能直接运行。追问

对,这个错误就是这些node node.js这个文件时报的错!

无法在nodejs中导入带有require()的模块

我正在开发一个nodejs webapp,我有一个问题。我有一个twitter.js模块,它公开了一些在其他文件中使用的函数。我的主要应用程序app.js正确导入它并可以使用这些功能。问题是,如果我在另一个.js文件中导入它(通过var twitter = require(./twitter)方法),它没有加载,我可以通过console.log(twitter)看到它,也因为它没有不承认这些功能。如果app.js需要它,就会发生这种情况。我复制了twitter.js文件,并以不同的方式命名,如果我导入它有效。我怎么解决这个问题?谢谢

编辑:添加一些代码

这是主app,app.js

var express = require("express");
var bodyParser = require("body-parser");
var path = require("path");

var twitter = require("./twitter");
var mongo = require("./mongo");
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}))

app.use(express.static(path.join(__dirname,'public')));

app.set('view engine','ejs');
app.set('views',path.join(__dirname,'views'));

app.get("/",function(req,res){
    res.render("index.ejs")
});
app.get("/twitter",function(req,res){
    twitter.getTrends(res);
});
app.post("/sendMessage",function(req,res){
    twitter.postTwit(req.body.valore);
});
app.get("/pullData",function(req,res){
    mongo.pullData(res);
});
app.listen(8080, function(){
    console.log("server started on 8080");
});

接下来是twitter.js文件:

var Twitter = require('twitter'); //import package
var mongo = require("./mongo");

var T = new Twitter({ ---developer keys here --})

exports.getTrends = function(res){

  var params = { id: 23424853, count: 10}
  T.get('trends/place',params,gotData);

  function gotData(err,data,response){
      res.render('tweets',{ data: data[0], length: 10});}
}
exports.postTwit = function(value){
  T.post('statuses/update', {status:value}, function(error, tweet, response)       {
    mongo.pushdata(tweet.id_str);
      });
}
exports.loadTwit = function(res,value){
var params = {id: value}
T.get('statuses/show/', params, function (err, data, response) {
  console.log(data);
  res.render('db',{ data: data});
});
}

最后是mongo数据库的mongo.js文件

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
var twitter = require('./twitter');

exports.pushdata = function(value){
  MongoClient.connect(url, function(err, db) {
    if (err) throw err;
    var myobj = {id: value};
    db.collection("tweets").insertOne(myobj, function(err, res) {
      if (err) throw err;
      db.close();
    });
  });
}
exports.pullData = function(res){
  MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  db.collection("tweets").find({}).toArray(function(err, result) {
    result.forEach(function(entry) {
    twitter.loadTwit(res,entry);
});
    db.close();

  });
});
}

所有这些文件都在同一个文件夹中。

答案

您已经在mongo.jstwitter.js之间创建了循环依赖关系。

mongo.js尝试加载twitter.js,而mongo.js又需要twitter。那就是问题所在。删除此循环依赖项。

也许你可以在调用mongo.js的函数时将// pass the twitter object as a parameter exports.pullData = function(twitter, res){ MongoClient.connect(url, function(err, db) { if (err) throw err; db.collection("tweets").find({}).toArray(function(err, result) { result.forEach(function(entry) { twitter.loadTwit(res,entry); }); db.close(); }); }); } 对象作为参数传递。或者是其他东西。

对于例如

mongo.js

var twitter = require('./ twitter');

qazxswpoi

以上是关于nodeJs无法执行js文件?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu安装nodejs后无法使用npm命令

无法运行反应js项目

appendTo 不执行js文件

IE8下调用js文件,无法正常执行的问题,望高手不吝赐教!在线等~

从可执行文件 (.exe) 中恢复 NodeJS 代码

Yarn 无法执行 source 命令