从node v7
升级到node v8
后,webpack
无法编译我的react
代码。
它说没有找到一些node_modules
。注意:此问题不会在 Windows 上发生。
我尝试了几种方法,从刷新节点缓存和npm_modules
到仔细检查$NODE_PATH
,但仍然未能使其工作。看起来像是node v8
和webpack
(或某些 ES6 语法(的兼容性问题。
暂时我恢复到node v7
以使其工作。
有人遇到这个问题吗?
当您安装新的 Node 版本时,您需要确保使用该新版本安装要全局安装的所有模块(您需要先在 PATH 中同时node
和npm
,然后再在 PATH 中拥有任何其他版本的node
和npm
,否则这可能无法按预期工作(。然后,您需要重建所有本地安装的模块(在某些情况下,您可能需要删除node_modules
目录以确保所有内容都是从头开始构建的(。
当您从二进制包安装多个 Node 版本(使用二进制压缩包或 nvm 等(时,一个很常见的问题是,安装的npm
具有通用的 shebang 行#!/usr/bin/env node
,而不是像#!/opt/node-v8.0.0/bin/node
这样的特定路径,如果您自己从源代码构建 Node,情况就是如此。
这意味着您有时会因使用使用错误版本的 Node 的全局路径运行npm
而遇到麻烦,从而导致一些难以注意到的问题。
根据我的经验,问题最少的 Node 安装是从源代码构建它,安装在版本控制目录中,并在全局安装模块之前、本地 npm 安装之前以及运行您希望使用该特定 Node 版本的项目之前将其显式添加到 PATH。这样,您可以确保不使用任何可能从旧版本遗留下来的文件,就像在通用/usr/local
前缀下安装一样。
您可以查看我的教程以获取更多详细信息和安装Node的其他选项:
- https://gist.github.com/rsp/edf756a05b10f25ee305cc98a161876a
一般来说,你所描述的通常是由 Node 的安装冲突引起的。