我已经使用stencil一段时间了,正在为它开发一个自定义的主题,我已经安装了nvm和Node5.0和NPM2。我也删除了stencil,并重新安装了所有的内容,包括节点模块和stencil init,但不管什么情况,当运行stencil start时,我仍然会出现下面的错误,我已经在谷歌上搜索了这个问题,但却是空的,所以我希望有人能帮我解决这个问题。提前道谢!
⇒ stencil start
url.js:110
throw new TypeError("Parameter 'url' must be a string, not " + typeof url)
^
TypeError: Parameter 'url' must be a string, not undefined
at Url.parse (url.js:110:11)
at Object.urlParse [as parse] (url.js:104:5)
at module.exports (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/server/index.js:14:31)
at startServer (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/bin/stencil-start:188:5)
at /usr/local/lib/node_modules/@bigcommerce/stencil-cli/bin/stencil-start:166:32
at /usr/local/lib/node_modules/@bigcommerce/stencil-cli/server/lib/stencil-token.js:55:24
at finish (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/node_modules/wreck/lib/index.js:137:20)
at wrapped (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/node_modules/hoek/lib/index.js:866:20)
at ClientRequest.onResponse (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/node_modules/wreck/lib/index.js:158:20)
at ClientRequest.g (events.js:199:16)
我从未使用过模具,但由于模具配置文件(./.Stencil
)中未设置URL而引发此错误。这是应该在stencil init
期间设置的内容吗?具体地说,您需要确保在.stencil
文件(我假定它是一个JSON配置文件,位于项目根目录中)中设置了这两个值:
了解如何调试节点错误可能很有用。以下是我在阅读和调试中的思维过程:
1.
TypeError: Parameter 'url' must be a string, not undefined
at Url.parse (url.js:110:11)
at Object.urlParse [as parse] (url.js:104:5)
所以错误是很直接的。程序试图从字符串解析URL,但该字符串未定义,因此导致主要错误。具体而言,节点模块url.js
正在尝试进行解析。
URL应该在哪里定义呢?让我们继续下去,看看能不能弄明白。
2:
at module.exports (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/server/index.js:14:31)
https://github.com/bigcommerce/stencil-cli/blob/master/server/index.js
让我们打开这个文件,查看第14行,内容如下:
module.exports = function(options, callback) {
var config = manifest.get('/'),
parsedSecureUrl = Url.parse(options.dotStencilFile.storeUrl), //Line 14 - The url to a secure page (prompted as login page)
parsedNormalUrl = Url.parse(options.dotStencilFile.normalStoreUrl); //The host url of the homepage;
...
好了,我们找到了抛出错误的确切行(parsedsecureurl
)。此URL应包含在用于初始化此模块的options对象中(module.exports=function(options,callback){}
)
需要继续挖掘,以了解该options对象是从哪里定义的,以及它是如何包含其dotstencilfile
属性(options.dotstencilfile
)的。
3:
at startServer (/usr/local/lib/node_modules/@bigcommerce/stencil-cli/bin/stencil-start:188:5)
https://github.com/bigcommerce/stencil-cli/blob/master/bin/stencil-start,内容如下:
/**
* Starts up the local Stencil Server as well as starts up BrowserSync and sets some watch options.
*/
function startServer() {
var params = {
dotStencilFile: dotStencilFile, //It's getting set here!!
variationIndex: themeConfig.variationIndex || 0,
stencilEditorEnabled: Program.themeEditor,
stencilEditorPort: Program.themeEditorPort || 8181,
useCache: Program.cache
};
//Line 188 below:
Server(params, function (err) {
var watchFiles = [
'/assets',
'/templates',
'/lang'
];
...
因此,我们在步骤2中找到了负责初始化options
参数并将其传递给模块的函数。具体地说,变量称为params
,而包含URL的对象是params.dotstencilfile
。
此时,我们只需要弄清楚dotstencilfile
应该是什么。
4:
通过搜索此文件中的源代码,我可以看到dotstencilfile
是通过以下方式声明的:dotStencilFilePath,{encode:'UTF-8'});
因此dotStencilFilePath
的值是通过从位于dotStencilFilePath
的磁盘读取文件来设置的。
那么最后一个问题,它的路径是什么?...DotStencilFilePath
的值是什么?
对我们来说很容易,它的值是在同一个文件中定义的:var dotStencilFilePath=path.join(themePath,'.stencil');
WherethemePath
=var themePath=process.cwd();
(此文件的当前工作目录,当然是项目根)。
5:(解)
好了,我们搞定了!应该包含URL的文件名为.stencil
(隐藏文件),位于项目根(/users/rob/MyStencilProject/.stencil
)中。
这个.stencil
文件应该是一个JSON文件,它包含两个URL属性的值:StoreURL
和NormalStoreURL
。
我应该检查这个文件,以确保那些属性已经设置。我应该在stencil init
期间设置它们吗?我可以手动设置它们吗?无论哪种方式,我都确信主要错误是由于该文件不包含上述两个URL的值而导致的。
好的,我希望这些信息有助于解决您当前的问题,以及您在开发过程中可能遇到的任何其他问题。祝你好运!
我正在使用pygame创建一个游戏,但遇到了一个错误,我是pygame的新手。我正在使用python 3.8和pycharm社区版2020.1 这是我制作游戏的视频:https://www.youtube.com/watch?v=FfWpgLFMI7w这里是错误: 这是我的密码:
我知道很多人问过相关的问题,但请帮我解决。我试图复制一个我在网上找到的开源温度控制实验室。我想在树莓皮上运行它。这就是我一直遇到的错误: 生成它的代码如下所示: 我相信这段代码试图通过以下代码与另一个python文件通信: 我还不知道我周围的python代码,所以一个非常清晰的“虚拟类”解决方案的解释会很有帮助。谢谢伙计们。
我使用的是Python3.3,但在尝试pickle一个简单的字典时出现了一个隐秘的错误。 代码如下: 我得到:
我正在做一个游戏,这里似乎有一些问题。这是我第一次使用sprite床单,如果我的错误很简单,我很抱歉。 对于大量的代码,我提前表示歉意,但不幸的是,我相信问题可能存在于代码中的任何地方。我收到的错误是“TypeError:参数1必须是pygame.Surface,而不是method”。这是指all_sprites.draw(screen)命令。我知道屏幕的格式是正确的,所以不是这样。我的老师说很可
我想对一个浮点数进行四舍五入,得到点后的两位数。但我收到了一个错误: float()参数必须是字符串或数字,而不是“NoneType” 在评级模型的评级字段中四舍五入是一个坏主意,因为平均_评级不会四舍五入