Node.js

解决写node.js中遇到的问题

1.文件格式

1.1遇到的问题

用VS-code时新建文件选择javascript会生成**.mjs文件而不是.js文件

在这里插入图片描述

报错样式截图:
在这里插入图片描述

1.起初以为是没有import require.js库的原因,后来在node_module中找到了require.js的库,即排除了这一可能

2.后将问题解决的核心放在ESM上,可能没有加载到ES模块

将server.mis ->server.js

在所运行js文件的路径下
node server.js

就可以成功开放8088端口了

-Nodejs 中 ES Modules 使用

ES Modules基本使用

通过声明 .mjs 后缀的文件或在 package.json 里指定 type 为 module 两种方式使用 ES Modules,下面分别看下两种的使用方式:

使用方式一

构建如下目录结构

├── function.js
├── index.js
└── package.json

package.json

重点是将 type 设置为 module 来支持 ES Modules

{
  "name": "esm-project",
  "version": "1.0.0",
  "main": "index.js",
  "type": "module",
  ...
}

function.js

export function sayhello () {
  console.log('hello from myself')
};

index.js

import {add} from './function.js';
console.log(sayhello());

在终端中运行

使用 ESM 运行时仍然会触发一个 experimental 警告信息。

$ n run v12.17.0 index.js     
(node:6827) ExperimentalWarning: The ESM module loader is experimental.
hello from myself

$ n run v14.3.0 index.js
hello from myself

使用方式二

通过指定文件扩展名为 .mjs 与 CommonJS 模块进行区分,这样是不需要在 package.json 中指定 type 为 module

在上述例子基础上修改文件扩展名即可。

├── function.mjs
├── index.mjs

运行

$ n run v12.17.0 index.mjs     
(node:6827) ExperimentalWarning: The ESM module loader is experimental.
hello from myself

模块导入导出的几种方式

exports导出

export 用于对外输出模块,可导出常量、函数、文件等,相当于定义了对外的接口,两种导出方式:

  • export: 使用 export 方式导出的,导入时要加上 {} 需预先知道要加载的变量名,在一个文件中可以使用多次
  • export default: 为模块指定默认输出,这样加载时就不需要知道所加载的模块变量名,一个文件中仅可使用一次

import导入

import 语句用于导入另一个模块导出的绑定,三种导入方式:

  • 导入默认值:导入在 export default 定义的默认接口

  • as 别名导入:在导入时可以重命名在 export 中定义的接口

  • 单个或多个导入:根据需要导入 export 定一个的一个或多个接口

import动态导入

可以像调用函数一样动态的导入模块,它将返回一个 Promise,但是这种方式需要 Top-Level await 支持
Top-Level await -

2.端口占用问题

第一次成功运行node.js之后,再去修改js文件,然后在运行,浏览器 (localhost:端口号)就加载很慢还加载不出来

在这里插入图片描述

显示已被监听也就是端口被占用了,有两个解决方案

  • 开一个新的未打开端口

这个很简单但是不建议

  • 关闭正在占用监听的端口
  1. 找到端口对应的进程号PID,然后终止进程
  2. 打开进程监控,在监控中找到对应端口应用并关闭
  3. 全局安装
sudo npm install -g xl_close_port

1,2对应的关闭端口方法太过于麻烦,所以第三种更高效便捷,在安装时如果出现报错建议用超级命令下安装

安装完毕后

➜  src xl_close_port -p 8088
[5]  + 38081 killed     node server.js
关闭端口 8088 成功!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值