Nodejs引入模块运行时报错

在做自动化部署的时候,引入包管理,运行脚本的时候报错:

const path = require('path')
const fs = require('fs')
const Client = require('ssh2-sftp-client')

报错信息如下:

PS D:\CODING\Projects\vue-admin-template> node deploy/index.mjs
file:///D:/CODING/Projects/vue-admin-template/deploy/index.mjs:1
const path = require('path')
             ^

ReferenceError: require is not defined in ES module scope, you can use import instead
    at file:///D:/CODING/Projects/vue-admin-template/deploy/index.mjs:1:14
    at ModuleJob.run (internal/modules/esm/module_job.js:183:25)
    at async Loader.import (internal/modules/esm/loader.js:178:24)
    at async Object.loadESM (internal/process/esm_loader.js:68:5)
    at async handleMainPromise (internal/modules/run_main.js:59:12)

根据提示首先将require改成import,运行报错:

PS D:\CODING\Projects\vue-admin-template> node deploy/index.js 
(node:16164) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
D:\CODING\Projects\vue-admin-template\deploy\index.js:1
import { join } from 'path'
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:1001:16)
    at Module._compile (internal/modules/cjs/loader.js:1049:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
    at internal/main/run_main_module.js:17:47

根据报错提示,尝试两种解决方案:
1.在package.json中使用"type": "module":不可行,这将覆盖整个项目,导致项目启动不了。
2.将文件更改为index.mjs,表示引入module模块。最终解决问题。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值