JSON.parse:运行 nextjs 时 JSON 数据的第 1 行第 1 列出现意外字符

JSON.parse: unexpected character at line 1 column 1 of the JSON data when runing nextjs

我的项目在访问任何页面时突然出现以下错误:

JSON.parse: unexpected character at line 1 column 1 of the JSON data

从头开始重建项目后,我发现原因是在 dev 命令上设置的节点路径,如下所示:

//package.json file
"NODE_PATH=. next"

这是一个常见的解决方案,描述了 here 以允许在导入时使用绝对路径,用于启用 typescript 的 nextjs 项目。

要重现,请按照以下步骤操作:

  1. 运行 npm init next-app 创建应用。随意命名您的项目。
  2. 将 package.json 文件上的开发命令更改为:dev:"NODE_PATH=. next"
  3. 运行 npm 运行 dev
  4. 访问网站。您应该看到一个空白页面而不是介绍页面。
  5. 在浏览器上打开 JavaScript 控制台。错误应该在那里。

这是迄今为止我发现的唯一可以在本地和 Vercel 云中使用的解决方案。 任何 fix/way 保持此绝对路径都是好的

这里是堆栈。不会增加太多,但无论如何:

<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 中找到了它,不得不深入挖掘才能找到问题的根源。