Javascript 节点-Can';t获取moment.js以在VSCode中编译(模块和需求问题)

Javascript 节点-Can';t获取moment.js以在VSCode中编译(模块和需求问题),javascript,node.js,express,momentjs,Javascript,Node.js,Express,Momentjs,我一直在使用一个在线ide来组装我的节点应用程序,但现在我正试图让它在我的本地计算机上运行。此时,我在启动时遇到了一个问题:当我使用终端运行“node app.js”时,我收到以下错误消息: \node_modules\moment\moment.js:7 import { hooks as moment, setHookCallback } from './lib/utils/hooks'; ^^^^^^ SyntaxError: Cannot use import statement ou

我一直在使用一个在线ide来组装我的节点应用程序,但现在我正试图让它在我的本地计算机上运行。此时,我在启动时遇到了一个问题:当我使用终端运行“node app.js”时,我收到以下错误消息:

\node_modules\moment\moment.js:7
import { hooks as moment, setHookCallback } from './lib/utils/hooks';
^^^^^^

SyntaxError: Cannot use import statement outside a module
app.js:2
const bodyParser = require("body-parser"),
                   ^

ReferenceError: require is not defined
我发现解决这个问题的答案是在目录中的package.json文件中添加“type”:“module”。但是,当我将其添加到应用程序中并尝试再次运行应用程序时,会收到以下错误消息:

\node_modules\moment\moment.js:7
import { hooks as moment, setHookCallback } from './lib/utils/hooks';
^^^^^^

SyntaxError: Cannot use import statement outside a module
app.js:2
const bodyParser = require("body-parser"),
                   ^

ReferenceError: require is not defined
以下是我的作品:

const bodyParser = require("body-parser"),
methodOverride   = require("method-override"),
mongoose         = require("mongoose"),
express          = require("express"),
moment           = require("moment"),
app              = express();

所以我不确定为什么我不能让两者都工作,这样我的应用程序才能运行;我相信这很简单,但我不知所措。谢谢。

您应该只在NodeJS中使用
require

js脚本并不打算以这种方式在服务器端JavaScript中使用。使用
require('moment')
代替:

const moment = require('moment');
const bodyParser = require("body-parser");
代替-app.js:2 const bodyParser=require(“主体解析器”)

你能试一下吗-
从“body parser”导入bodyParser

当您添加type=module时,您会告诉编译器您正在应用程序中使用ES6 modules type。所以,现在你不能再使用require了。
解决初始问题的更好方法是卸载moment.js并尝试重新安装一些兼容的版本。根据我的观察,安装的moment.js中出现了错误。

您使用的是哪个版本的nodejs?我有Node.js v12.18.0是什么导致调用
\Node\u modules\moment\moment.js
?这是一个客户端脚本。请添加更多app.js代码<代码>要求(“时刻”)本身不会触发此错误。哦,我应该在上面的问题中包含这一部分。我确实已经在app.js文件的顶部有const moment=require('moment'),并且仍然收到该错误。该错误应该是不可能的。再见。你能添加更多的app.js脚本吗?您可以添加
SyntaxError:cannotuse import语句的堆栈跟踪吗?
error因此,似乎我首先安装了不正确的Moment.js版本,这就是为什么它会抛出此错误,尽管它本不可能。重新安装它似乎已经解决了这个问题。感谢您花时间提供帮助。正如我在下面所说的,简单的答案似乎是安装了错误版本的矩,因为只需重新安装它就可以解决我的问题。我认为它是正确的版本,因为它在我的在线ide中工作得很好,但我发现它在一开始就没有正确安装。谢谢你花时间帮忙。这正是问题所在;我重新安装了依赖项,现在它工作得很好。我知道答案可能就这么简单,但我想不起来。非常感谢。