[TOC]

node运行环境常见问题

1. node环境不支持ES6的import解决

在我学习ES6的import语法的时候,在自己电脑的node环境下模拟运行import,发现node环境不支持import语法,报如下错误:

(function (exports, require, module, __filename, __dirname) { import pp from './a'
                                                              ^^^^^^
SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:617:28)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)

我的node版本是v8.12.0,

在网络上查找资料发现:nodejs采用的是CommonJS的模块化规范,使用require引入模块;而import是ES6的模块化规范关键字。想要使用import,必须引入babel转义支持,通过babel进行编译,使其变成node的模块化代码。

由于我只是学习测试,不想这么麻烦,所以我发现了一个快捷的测试方法:

可以使用--experimental-modules实验模块标志来启用加载ECMAScript Modules的特性。 而且作为ES模块加载的文件名,必须以.mjs后缀结尾

node --experimental-modules my-app.mjs

# 此种方法,在输出的时候会出现如下提示,表示是个实验模块,到时候可能会修改。
(node:16208) ExperimentalWarning: The ESM module loader is experimental.

经过我的测试,这个node --experimental-modules是可以的,只不过测试文件后缀名要修改成.mjs

参考资料: https://www.cnblogs.com/weiqinl/p/9152219.html

2. node版本太高,导致gitbook报错

2021-04-04

由于使用新电脑,初次安装node后,再安装好gitbook-cli工具后,再命令行中执行gitbook命令报错:

gitbook build .
/usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function
    at /usr/local/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (fs.js:184:5)

经过搜索,看到一个相关解决文档:https://blog.csdn.net/weixin_42349568/article/details/108414441

发现这个是由于node版本太高导致。

我的node版本:

node -v
v14.16.0

需要使用n工具来切换工具:

npm install -g n
sudo n v10.21.0

经过把node版本切换到v10.21.0后,在执行gitbook命令发现没有问题了,问题得到解决。

powered by Gitbook文件最后修改时间: 2021-05-20 16:38:07

results matching ""

    No results matching ""