node下的two.js调用one.js出现无法编译问题 Cannot find module ‘c:

简介: node下的two.js调用one.js出现无法编译问题 Cannot find module ‘c:

由于自己经常在本地写一些 js 脚本进行文件处理等工作,常常会使用 import 语法引入模块。但是 Node 在默认情况下是不支持 import 和 export 的。

(function (exports, require, module, __filename, __dirname) { import fs from ‘fs’;

^^

SyntaxError: Unexpected identifier

at new Script (vm.js:79:7)

at createScript (vm.js:251:10)

这里我提供一个自己在本地调试 js 代码时常使用的方式:使用 babel-node 命令,来运行含有 import/export 语法的 js 代码。

  1. 安装 babel-node
    babel-node 命令并非独立安装,在该死的 Babel 7.x 以前,需要通过安装 babel-cli 包获得。而在更该死的 Babel 7.x 以后,babel 的模块被被拆分。因此需要安装 @babel/core @babel/node 两个包来获取。
    如果你希望 babel-node 命令在全局可用,使用 -g 参数会让你一劳永逸。
    babel 7.x 以前的写法
    $ npm i -g babel-cli

babel 7.x 以后的写法

$ npm i -g @babel/core @babel/node

2. 安装 presets 并配置 .babelrc 文件

仅单安装 babel-node 也没用,运行 js 文件后你会发现依然报错。这是因为 babel-node 对 import 语法默认也是关闭的,因此需要安装指定的 preset 并配置 .babelrc 文件来开启语法支持。

截止2019年1月,原有的 babel-preset-es2015 写法已经废弃,与之代替的是 babel-preset-env 或者 @babel/preset-env,目前以后者为推荐。(鬼知道 babel 还会不会再变…)

由于两个 preset 模块对应的属性不同,因此分介绍:

第一种 babel-preset-env 写法

$ npm i babel-preset-env --save-dev

复制代码.babelrc 文件配置

{
  "preset": [ "env" ]
}

复制代码第二种 @babel/preset-env 写法

$ npm i @babel/preset-env --save-dev

复制代码.babelrc 文件配置

{
  "presets": [ "@babel/preset-env" ]
}

复制代码3. 执行 babel-node

至此经过上述配置,再通过 babel-node 即可执行含有 import/export 等 es6 语法的 js 文件。

$ babel-node test.js

复制代码最后切记由于性能问题,babel-node 仅限于在本地调试时使用,上线生产环境的代码还是需要使用 babel 进行转换,再使用 node 运行。

目录
相关文章
|
9天前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
42 0
|
11天前
|
JavaScript 前端开发 开发工具
五子棋小游戏(JS+Node+Websocket)可分房间对战
本文介绍了通过JS、Node和WebSocket实现的五子棋游戏,支持多人在线对战和观战功能。
20 1
五子棋小游戏(JS+Node+Websocket)可分房间对战
|
2月前
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
|
2月前
|
JSON JavaScript 前端开发
JS的无限可能: 前端 精妙DOM技巧至Node.js的服务端
JS的无限可能: 前端 精妙DOM技巧至Node.js的服务端
|
2月前
|
缓存 JavaScript 前端开发
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
这篇文章介绍了如何解决npm版本与Node.js版本不兼容的问题,提供了查看当前npm和Node.js版本的步骤,以及如何根据Node.js版本选择合适的npm版本并进行升级的详细指导。
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
|
2月前
|
机器学习/深度学习 JavaScript
node.js实现遍历所有文件夹里面的js文件,提取所有的url
node.js实现遍历所有文件夹里面的js文件,提取所有的url
|
2月前
|
JavaScript 前端开发 API
全栈开发革命来临!Vue.js与Node.js联手,打造前后端无缝对接的奇迹之作!
【8月更文挑战第30天】在Web开发领域,前后端分离与协作至关重要。Vue.js以其轻量级和易用性深受前端开发者喜爱,而Node.js则以高性能和事件驱动特性在后端领域崭露头角。二者结合开启了全栈开发新篇章,通过RESTful API或GraphQL实现高效稳定通信。本文以示例说明如何使用Vue.js和Node.js构建全栈应用,从前端Vue组件到后端Express服务器,展示了数据获取与展示的全过程。这种组合提供了一种高效简洁的全栈开发方案,使开发者能更专注于业务逻辑实现。
67 0
|
3月前
|
存储 开发框架 JavaScript
Node中的AsyncLocalStorage 使用问题之egg.js 和 midwayjs 与 Koa.js 有什么关系
Node中的AsyncLocalStorage 使用问题之egg.js 和 midwayjs 与 Koa.js 有什么关系
|
3月前
|
JavaScript 中间件 API
Node中的AsyncLocalStorage 使用问题之Express.js是传递TraceId的问题如何解决
Node中的AsyncLocalStorage 使用问题之Express.js是传递TraceId的问题如何解决
|
2月前
|
JavaScript
NodeJs——Parsing error: Cannot read file '.../tsconfig.json'.eslint
NodeJs——Parsing error: Cannot read file '.../tsconfig.json'.eslint
17 0
下一篇
无影云桌面