我的项目在访问任何页面时突然开始出现以下错误:
JSON.parse: unexpected character at line 1 column 1 of the JSON data
从头开始重建项目后,我发现原因是在 dev 命令上设置的节点路径,如下所示:
//package.json file
"NODE_PATH=. next"
这是此处描述的常见解决方案,用于启用打字稿的nextjs项目在导入时使用绝对路径。
要重现,请按照以下步骤操作:
- 运行 npm init next-app 以创建应用。 将项目命名为任何你喜欢的名称。
- 将 package.json 文件上的 dev 命令更改为:dev:"NODE_PATH=。下一个">
- 运行 npm 运行开发
- 访问网站。您应该看到一个空白页面,而不是简介页面。
- 在浏览器上打开 JavaScript 控制台。错误应该在那里。
这是我发现的唯一一个在本地和Vercel云中都有效的解决方案。 保留此绝对路径的任何修复/方法都很好
这里是堆栈。没有增加太多,但无论如何:
<anonymous> platform.js:14
NextJS 3
js
__webpack_require__
fn
<anonymous> detect-focus.js:19
NextJS 3
js
__webpack_require__
fn
<anonymous> supports.js:21
NextJS 3
js
__webpack_require__
fn
<anonymous> valid-tabindex.js:55
NextJS 3
js
__webpack_require__
fn
<anonymous> tabindex-value.js:22
NextJS 3
js
__webpack_require__
fn
<anonymous> focus-relevant.js:19
NextJS 3
js
__webpack_require__
fn
<anonymous> focusable.js:7
NextJS 3
js
__webpack_require__
fn
<anonymous> focusable.strict.js:8
NextJS 3
js
__webpack_require__
fn
<anonymous> focusable.js:42
NextJS 3
<anonymous> disabled.js:37
NextJS 3
<anonymous> Overlay.js:29
NextJS 3
<anonymous> index.js:3
NextJS 3
<anonymous> Errors.js:81
NextJS 3
<anonymous> ReactDevOverlay.js:44
NextJS 3
<anonymous> client.js:87
NextJS 3
<anonymous> hot-dev-client.js:1
<anonymous> hot-dev-client.js:375
NextJS 3
<anonymous> webpack-hot-middleware-client.js:1
<anonymous> webpack-hot-middleware-client.js:107
NextJS 3
<anonymous> next-dev.js:1
<anonymous> next-dev.js:149
NextJS 5
所有组件都是最新的:
//package.json
"dependencies": {
"next": "9.4.1",
"react": "16.13.1",
"react-dom": "16.13.1"
}
nodejs version: v12.16.3
绝对路径使用示例:
import TopBar from 'components/TopBar' // for components
import "public/baseLine.css" // for any public resources
我能够通过更改webpack
配置来保持路径完全相同:
//next.config.js file
module.exports = {
webpack(config) {
config.resolve.modules.push(__dirname)
return config;
},
}
现在在 Next 9.4 中支持并内置
了此功能如果您在更新到Next 9.4后通过谷歌搜索来到这里,请务必使用jsconfig.json
文件,并且您没有任何地方NODE_PATH=.
。我在 PHPStorm 中拥有它,并且必须挖掘很多才能找到问题的根源。